2013-03-27 140 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

你可以使用一個工廠,但這不會和第一個代碼有太大不同。你的問題是什麼? – 2013-03-27 17:32:24

+0

我不明白聲明有什麼好處,表達式沒有。 – 2013-03-27 17:35:43

回答

2

我知道我可以在一個對象中使用函數表達式,但它是可以使用函數聲明來代替?

只有表達式。

最接近的可能是在範圍內有一個函數聲明,然後通過名稱將該函數分配給一個對象屬性。

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

如果我正確認識你,你只是想使用「funcname函數(){..} 「語法而不是」obj.prop = function(){..}「正確嗎?你就可以做到這一點的唯一方法就是使用這樣的:

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

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

當你使用「的varName =新了funcName()」調用一個函數它創建了一個對象。