js原型對象中屬性被覆蓋(1)


/**   *@author 程無衣   *@description 關於在原型對象中屬性被覆蓋   */       function Person(){}       Person.prototype={   constructor:Person,   age:24   }       var person1= new Person();   person1.age=20;   console.log(person1.age);//20   /*輸出的是實例的age屬性   說明Person原型對象的age屬性被實例   的age屬性覆蓋了   */       var person2= new Person();   console.log(person2.age);//24   //輸出的是Person的原型對象中的age屬性       //---------------------------------------------------------------------       //如果說構造函數中也有屬性的話會怎么樣呢?   function Person(){   this.age=26;   }       Person.prototype={   constructor:Person,   age:24   }       var person1= new Person();   person1.age=20;   console.log(person1.age);//20   /*   我們發現實例化后的屬性沒有受到影響,當需要age屬性   的時候,原型鏈首先還是在實例的屬性中搜索這個age屬性   所以我們看到person2.age的值等於20   */       var person2= new Person();   console.log(person2.age);//26   //構造函數定義的就是實例的屬性,所以這里的person2的age屬性是26       delete person2.age;   //使用delete刪除實例的屬性  

console.log(person2.age);//24

console.log(person2.name);//undefined

 

//正如期待的那樣,實例的屬性被刪除后,在原型對象處搜索到了age屬性

 

 總結:在js的原型中。屬性的搜索順序是從實例屬性開始,沒有,再沿着原型鏈找到原型對象。再沒有,就返回未定義。

 下次加入繼承再來看看是不是按照預期的實現鏈式查找。

未完待續


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM