Ctor.prototype = null之后为什么result还有name属性?

specialCoder
  • 2.1k
var Ctor=function(){};
        function create(prototype){
            
                Ctor.prototype = prototype;
                var result = new Ctor();
                console.dir(result);//name:'sde'
                    Ctor.prototype = null;//清空了prototype吗?
                    console.dir(result);//name
                    console.log(Ctor.prototype);//null
                return result;
        }
        var obj2=create({name:'sde'});
        alert(obj2.name);//name:'sde';
        

求大神讲解下Ctor.prototype=null之后都发生了什么变化?为什么Ctor.prototype = null之后为什么result还有name属性?

result不是Ctor的一个实例吗,那它的name不是也应该继承自Ctor.prototype?既然Ctor.prototype=null了,为什么result还有name属性?
回复
阅读 2k
1 个回答
scort
  • 8.4k
✓ 已被采纳

不会对已经产生的对象有影响,后面new的就不行了。

var obj = {a:1}
//undefined
var obj1 = obj
//undefined
obj = {a:2}
//Object {a: 2}
obj1
//Object {a: 1}

类似这种情况。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏