今天才发现当js构造函数内又return语句时会和没有return语句不同。

当JS构造函数内有return语句时

以上可以看出来如果返回类型是引用类型,那么实例化出的对象将会被返回的对象取代,也就是[1,2]。但如果返回的是值类型那么并没有什么影响。

调用new foo()时有以下四步操作。

1.首先,新建一个空对象var obj = { }

2.之后obj的__proto__指向构造函数的原型对象 obj._proto_ = foo.prototype

3.将构造函数的this绑定到obj上,并运行构造函数  foo.call( obj )

4.返回obj对象,将其作为new出的实例

相关文章: