对象var与函数

时间:2013-03-22 16:45:09

标签: javascript function variables object

这两种结构之间有什么区别

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

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

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

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

1 个答案:

答案 0 :(得分:1)

我假设你的意思是bar(正如你宣布的那样)和

之间的区别
var bar2 = new foo();

barbar2之间没有太大区别,除了bar的原型永远是Object的原型属性(就好像你有编写var bar = new Object(); bar.something = value; bar.execute = function() {...}),而bar2的原型将分配给prototype的{​​{1}}属性(默认情况下为foo的原型属性)

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

请注意,使用构造函数方法,您可以使用原型:

Object

然后function foo() { this.something = value; } foo.prototype.execute = function() { /* Whatever */ }; 的所有实例共享相同的foo函数。这比为每个execute对象创建一个新的函数对象更节省空间。 (当然,如果你只创造其中一个,那就没有多大优势。)