Javascript中这两个语句之间有什么区别?

时间:2015-11-05 12:42:16

标签: javascript

除了您使用的纯粹偏好之外,这两个片段之间是否有任何区别?正如我所看到的那样,两者都使用了很多,并且不确定他们之间的区别/原因与可读性方面的偏好不同。

object.foo = function () {

    //code

}

foo : function () {

    //code

}

2 个答案:

答案 0 :(得分:4)

此:

object = {
    foo : function () {

        //code

    }
}

是编写第二个语句的完整方法,这意味着您在对象初始化中定义函数

这个例子:

object.foo = function () {

    //code

}

是指在声明对象后动态声明函数,例如在if语句中。

答案 1 :(得分:1)

他们在你给出的例子中做了完全相同的事情,但是有一些细微的差别可以解释为什么看似有两种方法可以做同样的事情。

以此为例......

var obj = {
    foo: function() {
        // do something
    }
};

然后您可以像这样扩展该对象......

obj.bar = function() {
    // do something different
};

但如果你这样做了......

obj = {
    bar: function() {
        // do something different
    }
};

...你将失去函数foo。因此,一种方法是显式声明一个对象,包括属性和函数,另一种方法可用于扩展现有对象。

只是非常清楚,这是不正确的语法......

var obj = {
    foo = function() {    // it should be foo: function() {}
        // do something
    }
};