我试图在对象中使用函数声明,但到目前为止还无法使用。我知道我可以在对象中使用函数表达式,但是可以使用函数声明吗?
这有效:
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 :(得分: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();