我一直在使用/调用来自这样的对象的函数:
var object = {
fn: function(){
alert('i can see it!');
}
};
object.fn(); // it works
但我不知道如何从{}
对象调用函数。
{
fn: function() {
alert('i can\'t see it');
}
}
fn(); // wont work ?
我想知道为什么这不起作用?有没有办法让它发挥作用?
答案 0 :(得分:4)
你的第二个例子是语法无效。 {}
被解释为带有标签和无效函数的块语句,因为它没有名称。
如果你想这样内联,你需要更像这样的东西:
({
fn: function() {
alert('now i can see it');
}
}).fn();
现在您正在创建一个对象,因为{}
不再是块语句,而是对象文字语法。然后,您将立即访问您定义的fn
属性。
当然没有什么意义,但它更接近你正在做的事情。
答案 1 :(得分:3)
fn在块内,而不在对象内。在块内传递名称值,即{}不起作用。或至少为该块提供一些标签。
答案 2 :(得分:0)
这样称呼:object.fn();
。正如@BlueSkies所说,第二个例子不起作用,因为它是无效的语法。你不能用JavaScript做到这一点。如果你像评论中大卫所说的那样命名那个对象,那么它就可以了。你不能用匿名对象调用函数。
以下是对象被称为e
的示例:http://jsfiddle.net/dhF5k/
答案 3 :(得分:0)
这是定义“独立”函数(没有包装器对象)的正确语法:
var fn = function () { ... };
function fn() { ... };