-2

这两种结构有什么区别

var bar = { 
    something : value,
    execute : function() { /* Whatever */ }
}

function foo() {    
    this.something = value;
    this.execute = function() { /* Whatever */ };
}

我的理由是 bar 是一个静态对象,而 foo 是一个必须调用新构造函数创建的常规对象

那是对的吗 ?或者不是真的

4

1 回答 1

1

我假设您的意思是bar(正如您声明的那样)和

var bar2 = new foo();

bar和之间没有太大区别bar2,除了原型 forbar将始终是的原型属性Object(就像你写的一样var bar = new Object(); bar.something = value; bar.execute = function() {...}),而原型 forbar2将是分配给prototype属性的任何东西foo(或原型属性Objectby默认)。

除了原型的问题,编写构造函数主要是为了方便。

请注意,使用构造函数方法,您可以使用原型来获得优势:

function foo() {    
    this.something = value;
}

foo.prototype.execute = function() { /* Whatever */ };

然后所有实例foo共享相同的execute功能。这比为每个foo对象都有一个新的函数对象更节省空间。(当然,如果您只创建其中之一,则没有太大优势。)

于 2013-03-22T16:53:55.870 回答