【发布时间】:2013-06-17 23:33:04
【问题描述】:
例如,我有一个构建Car 对象的函数。
function Car() {
var honkCount = 0;
var honkHorn = function () {
honkCount++;
$results.html('HONK!<br />');
};
return {
get honkCount() {
return honkCount;
},
honk: honkHorn
}
}
var car = new Car(); 和 var car = Car(); 似乎没有太大区别,我有点困惑。
【问题讨论】:
-
那不是构造函数,构造函数使用 this.something 在使用新前缀调用时影响返回的对象。
-
看起来像你那里的工厂模式
-
简要回答:如果您从“构造函数”返回任何内容(
this除外),它就不再是构造函数(或作为构造函数有用)。正如您所注意到的,使用new或不使用不会有太大的不同。 -
@BenjaminGruenbaum:不,就在它下面说“构造函数的“原型”属性的值是用于实现继承和共享属性的原型对象”,如果您返回文字。 [].slice() 还为您提供了一个全新的 Array 对象,但没有人认为它是构造函数。仅仅因为它有两个轮子并不能使它成为哈雷......
标签: javascript function oop object constructor