function Universe(){//缓存实例var instance;//重写构造函数Universe=function Universe(){return instance;};//保留原型属性Universe.prototype=this;//实例instance=new Universe();//??????????????????//重置构造函数指针//instance.constructor=Universe;//所有功能instance.start_time=0;instance.bang="Big";return instance;}这里的Universe构造函数的所有初始化只能执行一次,第二次执行时Universe被重置为function Universe(){return instance;};我的问题是,重置是什么时候开始生效的?第一次执行Universe时,new Universe();到底是new的旧构造函数还是被置换后的新构造函数呢?
2 回答
慕桂英546537
TA贡献1848条经验 获得超10个赞
Universe.prototype=this;这个很迷惑,构造函数内部的this应当是指向实例的,如果要保留原型属性应该是这么写的吧,Universe.prototype=this.__proto__求指教,感觉这么写很古怪!这里还有个问题
Universe=function Universe(){
return instance;
};
应当写在instance=new Universe();之后好一点吧,这样Universe.prototype=this;这句是不是可以省略不写。
刚才测试了一下,你应该是这样调用var t=Universe();那这个问题又来了this指向的是window...
- 2 回答
- 0 关注
- 665 浏览
添加回答
举报
0/150
提交
取消