从javascript对象调用函数

时间:2013-11-30 16:09:43

标签: javascript

我一直在使用/调用来自这样的对象的函数:

var object = { 
    fn: function(){ 
        alert('i can see it!'); 
    }
}; 
object.fn(); // it works

但我不知道如何从{}对象调用函数。

{
    fn: function() {
        alert('i can\'t see it');
    }
}

fn(); // wont work ?

我想知道为什么这不起作用?有没有办法让它发挥作用?

4 个答案:

答案 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() { ... };