【问题标题】:Object var vs Function对象变量与函数
【发布时间】:2013-03-12 14:58:55
【问题描述】:

这两种结构有什么区别

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

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

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

正确吗?或者不是真的

【问题讨论】:

  • 只要你把它看作是与其他语言比较的隐喻就对了。
  • 是的,看起来不错
  • @AaronKurtzhals 我确定当前的问题是重复的,我们似乎每天都会看到多次,但可能不是您链接到的问题。
  • 请澄清您的问题。 javascript 中没有静态对象这样的东西。您是在询问对象和函数之间差异的更细微之处吗?您是在问使用对象字面量语法{}new 之间的区别吗?

标签: javascript function variables object


【解决方案1】:

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

var bar2 = new foo();

barbar2 之间没有太大区别,除了bar 的原型将始终是Object 的原型属性(就像你写了var bar = new Object(); bar.something = value; bar.execute = function() {...}),而bar2 的原型将是分配给fooprototype 属性的任何内容(或默认情况下Object 的原型属性)。

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

请注意,通过构造方法,您可以充分利用原型:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-30
    • 2015-12-31
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    相关资源
    最近更新 更多