鍍金池/ 問答/HTML/ 有個(gè)constructor指向的問題。

有個(gè)constructor指向的問題。

            function Person(name){
                this.name=name;    
            }
            var p=new Person('x');
            console.log(p.constructor); 
            // function Person(name){this.name=name;} 
            
            function Person2(name){
                this.name=name;    
            }
            var one={
                sex:'man' 
            }
            Person2.prototype=one;
            var p2=new Person2('x');
            console.log(p2.constructor);
            //function Object() { [native code] },為什么把原型指定為one之后,構(gòu)造函數(shù)的指向也發(fā)生了改變。不知道該從哪里梳理這條鏈。     
回答
編輯回答
陌顏

這篇文章看看,寫得很好~

2018年1月9日 02:08
編輯回答
柚稚

因?yàn)槟惆涯J(rèn)生成的原型給重寫了。

默認(rèn)生成的 prototype 的 constructor 是指向構(gòu)造函數(shù)的。
你重寫后, one 這個(gè)對(duì)象本身沒有 constructor 這個(gè)屬性.
所以當(dāng)你 p2.constructor 時(shí),屬性查找順序如下

p2 上沒有 constructor, 查找它的原型 one , one 上沒有, 查找 one 的原型 Object, Object 上沒有, 查找 Object 上的原型 Object.prototype 。 Object.prototype 上有 constructor , 所以就把這個(gè) constructor 返回。

2017年7月5日 06:09