0

我试图在对象中使用函数声明,但到目前为止还不能。我知道我可以在对象中使用函数表达式,但是可以使用函数声明来代替吗?

这有效:

 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);
   }
 };
4

3 回答 3

2

我知道我可以在对象中使用函数表达式,但是可以使用函数声明来代替吗?

不,只有表达式。

您可以得到的最接近的方法是在范围内声明一个函数,然后按名称将该函数分配给一个对象属性。

function foo () { }
var bar = { func: foo };
于 2013-03-27T17:32:52.410 回答
1

如果我对您的理解正确,您只想使用“function funcname() { .. }”语法而不是“obj.prop = function() { ..}”对吗?你能做到这一点的唯一方法是使用这样的东西:

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

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

当您使用“varName = new funcName()”调用函数时,它会创建一个对象。

于 2013-03-27T17:49:16.760 回答
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();
于 2013-03-27T17:38:09.040 回答