2010-09-08 3 views
0

Я пытаюсь получить эту работу, но это не делает:Добавление динамической функции к объекту

var i; 

i.test = function() { 
    alert("hello"); 
} 

i.test(); 

Я ожидаю, что код, чтобы предупредить «привет», но вместо этого, ошибка консоли Firefox показывает:

missing } in XML expression 
alert("hello"); 
---------------^ 

Как мне это исправить ...

ответ

4

Ваш i не назначен ни к чему, так что это не является объектом. Фактически это указывает на глобальный объект undefined, который, как и должно быть, доступен только для чтения в Firefox. Вам необходимо:

var i = {}; //init to empty object 

тогда все будет хорошо.

+0

Я сделал то, что вы предлагали, и все в порядке. Благодаря! – Alterlife

0
var i = {}; 
i.test = function() { 
    alert("hello"); 
}; 

У вас было две отдельные проблемы. Вы не инициализировали i (как отмечено slebetman), и вам не хватало точки с запятой, заставляя интерпретатора использовать замену с запятой.

0

Вы не можете добавить функцию в неопределенное значение, необходимо создать реальный объект:

var i = {}; 

Хотя не требуется, вы должны иметь точку с запятой в конце оператора, чтобы избежать двусмысленности:

i.test = function() { 
    alert("hello"); 
}; 
Смежные вопросы