Javascript - 对象中的函数声明

时间:2013-03-27 17:30:58

标签: 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);
   }
 };

3 个答案:

答案 0 :(得分:2)

  

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

没有。只有表达式。

你可以得到的最接近的是在作用域中有一个函数声明,然后按名称将该函数分配给一个对象属性。

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

答案 1 :(得分: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()”调用函数时,它会创建一个对象。

答案 2 :(得分: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();