2017-02-12 10 views
0

これは私が私のように定義する変数を使用しようとしている、非常に奇妙ではある:私はこれを実行するとなぜウィンドウ変数を使用してインデックスを検索するときにエラーが発生しますか?

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

:私はこれを持って使用している機能で

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

私はエラーを取得する:Uncaught TypeError: Cannot read property 'variable' of undefined

しかし、(私にとっては)信じられないほど、私はとしてのparamsを定義する場合:

window.params = { ... } 

エラーが表示されなくなり、機能は正常に動作します!どうして?

(Obviusly私が最初window.paramswindow.params['variable']を置き換えるが、私は、これは同等であると信じている)

感謝。

+0

を最初の割り当て 'window.params ['variable'] = {...}; ' –

答えて

1

paramsにプロパティを追加する前に、paramsを最初に定義する必要があります。 だから、それを行うための正しい方法は、あなたがここにこれについての詳細な情報を取得します

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

または

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

、その後

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

です:あなたが拡大することができ https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Object_initializer

+0

私はお試しになります...ありがとう –

+0

ここではhttps://jsfiddle.net/sLww6c4u/を見てください。ライン114には、私がこれを持っている主要な問題を見ることができます。私は何が間違っているのか理解できません。 chartParams ['mychart']をparamsWorkに置き換えてください。同じ場所にあるparamsは同じ構造体です。なぜchartParams ['mychart']が必要なのですか?ありがとう。 –

+0

ここで 'chartsParams'は配列です。だから 'chartParams ['mychart']'は無効です。代わりに 'chartParams [0] ['mychart']' – Diode

関連する問題