为了账号安全,请及时绑定邮箱和手机立即绑定

js的单例模式,重写构造函数,为什么new了两次只执行了一次重写的那个构造函数

js的单例模式,重写构造函数,为什么new了两次只执行了一次重写的那个构造函数

弑天下 2018-10-12 14:10:43
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;

};


查看完整回答
反对 回复 2018-11-26
  • 1 回答
  • 0 关注
  • 878 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号