今天才发现当js构造函数内又return语句时会和没有return语句不同。
以上可以看出来如果返回类型是引用类型,那么实例化出的对象将会被返回的对象取代,也就是[1,2]。但如果返回的是值类型那么并没有什么影响。
调用new foo()时有以下四步操作。
1.首先,新建一个空对象var obj = { }
2.之后obj的__proto__指向构造函数的原型对象 obj._proto_ = foo.prototype
3.将构造函数的this绑定到obj上,并运行构造函数 foo.call( obj )
4.返回obj对象,将其作为new出的实例