function Universe() { // 缓存的实例 var instance = this; // 其它内容 this.start_time = 0; this.bang = "Big"; // 重写构造函数 Universe = function () { alert(1) return instance; //改成return this,uni2.bang是undefined };}// 测试var uni = new Universe();var uni2 = new Universe();uni.bang = "123";console.log(uni === uni2); // trueconsole.log(uni2.bang); // 123这里new了两次Universe(),只alert了一次1,为什么呢?然后重写构造函数里,把 return instance;改成return this,uni2.bang是undefined,两个有什么区别呢?
1 回答

梦里花落0921
TA贡献1772条经验 获得超6个赞
你return instance 的时候,返回的是上面那个 Universe() 作用域内的this,所以可以获取到 this.bang
Universe = function () {
alert(1)
// 这里返回的this 是当前这个 function作用域内的 this。没有任何属性
return instance;
};
添加回答
举报
0/150
提交
取消