2013-03-27 2 views
0

Я пытаюсь использовать объявление функции внутри объекта, но до сих пор не могу. Я знаю, что могу использовать выражения функций внутри объекта, но можно ли вместо этого использовать объявления функций?Javascript - Объявление функции в объекте

Это работает:

var objContainer = {}; 
objContainer.callback = function(data) { 
objContainer.server_date = data.responseXML.documentElement.getAttribute("answer"); 
alert("Object should have XML response: " + objContainer.server_date); 
}; 

Это не:

var objContainer = {}; 
function objContainer.callback(data) { 
objContainer.server_date = data.responseXML.documentElement.getAttribute("answer"); 
alert("Object should have XML response: " + objContainer.server_date); 
} 

Я также попытался использовать объявление функции с использованием объекта буквального обозначения, но он также не:

var objContainer = { 
    function callback(data) { 
    var objContainer.server_date = data.responseXML.documentElement.getAttribute("answer"); 
    alert("Object should have XML response: " + objContainer.server_date); 
    } 
}; 
+0

Вы можете использовать завод, но это не будет отличаться от первого кода. в чем проблема? –

+0

Я не понимаю, какую пользу имеет декларация, которой не обладает выражение. –

ответ

2

Я знаю, что я могу использовать выражения функций внутри объекта, но это возможно ли использовать объявления функций?

No. Только выражения.

Ближе всего вы можете получить объявление функции в области видимости, а затем присвоить функцию объекту по имени.

function foo() { } 
var bar = { func: foo }; 
0

За последний один пример, я думаю, это то, что вы хотите:

var objContainer = { 
    callback : function(data) { 
var objContainer.server_date = data.responseXML.documentElement.getAttribute("answer"); 
    alert("Object should have XML response: " + objContainer.server_date); 
         } 
        }; 
// then you could use the object like this: 
objContainer.callback(); 
1

Если я правильно понять, вы просто хотите использовать «функцию имя_функции() {..} "вместо" obj.prop = function() {..} "правильно? Единственный способ, которым Вы будете в состоянии сделать это, используя что-то вроде этого:

function objContainer() { 
    this.callback = callback; 
    function callback(data) { 
     alert(data); 
    } 
}; 

var myObjectContainer = new objContainer(); 
myObjectContainer.callback('hello world'); 

При вызове функции с помощью «VarName = новый имя_функции()» он создает объект.

Смежные вопросы