2017-02-12 3 views
0

Das ist sehr seltsam, ich versuche, eine Variable zu verwenden, die ich definieren wie:Warum erhalte ich einen Fehler bei der Suche nach einem Index mit Fenstervariable?

window.params['variable'] = { ... }; 

In der Funktion dieses Ich habe ich verwende:

function q() 
{ 
... 
// for example 
return new Chart(canvas, window.params['variable']); 
... 
} 

Als ich dies ausführen ich erhalte den Fehler: Uncaught TypeError: Cannot read property 'variable' of undefined

Aber unglaublich (für mich), wenn ich definieren params als:

window.params = { ... } 

Der Fehler verschwindet, und die Funktion läuft einwandfrei! Warum?

(Obviusly ersetze ich die window.params['variable'] durch window.params erste, aber ich glaube, dass dies entspricht)

Dank.

+0

können Sie erweitern die erste Zuweisung 'window.params ['variable'] = {...}; ' –

Antwort

1

Sie müssen zuerst params definieren, bevor Sie Eigenschaften zu params hinzufügen. So ist der richtige Weg, es zu tun ist,

window.params = {}; 
window.params['variable'] = { }; 

oder

window.params = { 
    'variable' : {} 
}; 

und dann

function q(){ 
... 
// for example 
return new Chart(canvas, window.params['variable']); 
... 
} 

Sie werden diese mehr Informationen über hier: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Object_initializer

+0

Ich werde versuchen ... danke –

+0

Schau hier https://jsfiddle.net/sLww6c4u/, in der Zeile 114 können Sie das Hauptproblem sehen, das ich damit habe, unabhängig von der Verwendung von Fenstervariable, Ich kann nicht verstehen, was ich falsch mache. Bitte ersetzen Sie chartParams ['mychart'] durch paramsWork und es wird funktionieren, die params in den gleichen Orten sind die gleiche Struktur, warum funktioniert nicht mit chartParams ['mychart'] das ist, was ich brauche? Vielen Dank. –

+0

Hier ist 'chartsParams' ein Array. 'ChartParams [' mychart ']' ist nicht gültig. Stattdessen verwenden Sie 'chartParams [0] ['mychart']' – Diode

Verwandte Themen