2017-02-12 13 views
0

Это очень странно, я пытаюсь использовать переменную, которую я определяю как:Почему я получаю сообщение об ошибке при поиске индекса с помощью переменной окна?

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

В функции я использую у меня есть это:

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

Когда я выполняю это Я получаю ошибку: Uncaught TypeError: Cannot read property 'variable' of undefined

Но, невероятно (для меня), когда я определяю Params как:

window.params = { ... } 

Ошибка исчезнет, ​​и функция работает нормально! Зачем?

(Obviusly я заменить window.params['variable'] на window.params первым, но я считаю, что это эквивалентно)

Спасибо.

+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, и он будет работать, параметры в тех же местах - одна и та же структура, почему не работает wit chartParams ['mychart'], что мне нужно? Благодарю. –

+0

Здесь 'chartsParams' - массив. Поэтому 'chartParams ['mychart']' недействителен. Вместо этого используйте 'chartParams [0] ['mychart']' – Diode