在javascript

时间:2015-07-13 00:03:36

标签: javascript function variables object naming-conventions

我很难理解这两个功能之间的区别。它们是一样的吗?看起来在第一种情况下,appleOne是对象的名称,在第二种情况下,appleTwo是函数的名称。但是,我读到Javascript中的函数和对象是相同的,所以我很困惑......

var appleOne = new function(color) {
    this.color = color;
}

function appleTwo (color) {
    this.color = color;
}

参考:来自http://www.phpied.com/3-ways-to-define-a-javascript-class/的代码

1 个答案:

答案 0 :(得分:1)

不同之处在于与变量appleTwo关联的对象是一个函数对象,与变量appleOne关联的对象不是一个函数:它是一个字段为color的“常规”对象。

我不会说JavaScript中的“函数和对象是相同的”。 的真实之处在于JavaScript中有多种对象:

  • 常规对象
  • 阵列
  • 功能
  • 正则表达式

在第一个示例中,您使用匿名函数作为构造函数,因此您生成并分配给appleOne的对象是“常规”对象。第二个示例使用函数声明来定义函数。

如果你的问题不是差异,而是为什么第一个案例“有效”(因为它不是一个非常常见的模式),有几个S.O.答案中提供的问题。