2013-03-22 46 views
-2

的是这2种结构之间的差异对象VAR VS功能

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

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

我的理由是,酒吧是一个静态的物体,和Foo是必须创建调用新的构造函数

定期对象

这是正确的吗?或者没有真正

+2

只要你把它看作是一个比喻来与其他语言进行比较就是正确的。 – 2013-03-22 16:46:43

+0

是的,这看起来正确 – 2013-03-22 16:46:46

+1

@AaronKurtzhals我敢肯定目前的问题是重复的,我们似乎每天都会看到它多次,但可能不是您链接到的问题。 – 2013-03-22 16:48:54

回答

1

我假设你的意思是bar之间的差异(如你宣布它)和

var bar2 = new foo(); 

还有比这不是一个很大的区别barbar2之间,其他的原型为bar总会是Object的原型属性(如果您已写入var bar = new Object(); bar.something = value; bar.execute = function() {...}),而bar2的原型将为foo(或默认情况下为Object的原型属性)的prototype属性分配的任何内容。

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

注意与构造方法,你可以使用原型的优势:

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

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

随后的foo所有实例共享相同的execute功能。这比每个foo对象具有新的函数对象更有效率。 (当然,如果你只是创建其中的一个,那么没有太大的优势。)