我很难理解这两个功能之间的区别。它们是一样的吗?看起来在第一种情况下,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/的代码
答案 0 :(得分:1)
不同之处在于与变量appleTwo
关联的对象是一个函数对象,与变量appleOne
关联的对象不是一个函数:它是一个字段为color
的“常规”对象。
我不会说JavaScript中的“函数和对象是相同的”。 的真实之处在于JavaScript中有多种对象:
在第一个示例中,您使用匿名函数作为构造函数,因此您生成并分配给appleOne
的对象是“常规”对象。第二个示例使用函数声明来定义函数。
如果你的问题不是差异,而是为什么第一个案例“有效”(因为它不是一个非常常见的模式),有几个S.O.答案中提供的问题。