Javascript原型,原型鏈?有什么特點?


如何: js中繼承都是通過原型對象實現的

    什么是原型對象: 集中存儲同一類型的所有子對象,共用成員的父對象

    如何:

     創建: 不用創建,買一贈一

       每創建一個構造函數,都附贈一個原型對象

     繼承: 在創建子對象時,new的第2步自動設置子對象繼承構造函數的原型對象

     訪問成員: 優先訪問私有成員

              自己沒有,就去父對象(原型對象)中查找

     將成員添加到原型對象中:

      構造函數.prototype.成員=值

  私有屬性和公有屬性:

   私有屬性: 保存在當前對象本地,僅歸當前對象獨有的屬性

   公有屬性: 保存在父對象中,所有子對象共有的屬性

   讀取屬性值: 子對象.屬性

   修改屬性值:  私有屬性,必須通過子對象自己修改

                 公有屬性,只能用原型對象修改!

 

 原型鏈:

  什么是: 由多級父對象逐級繼承,形成的鏈式結構,通過__proto__實現子類共用原型鏈上的屬性和方法,向上查找

原型鏈的運行機制:

1. 所有的函數數據類型都天生自帶一個屬性:prototype(原型),這個屬性的值是一個對象,瀏覽器會默認給它開辟一個堆內存
2. 在瀏覽器給prototype開辟的堆內存中有一個天生自帶的屬性:constructor,這個屬性存儲的值是當前函數本身
3. 每一個對象都有一個__proto__的屬性,這個屬性指向當前實例所屬類的prototype(如果不能確定它是誰的實例,都是Object的實例)
 
function Student(sname,sage){
    this.sname=sname;
    this.sage=sage;
}
Student.prototype.intr=function(){
    console.log("I'm "+this.sname+", I'm "+this.sage);
}
var lilei=new Student("Li Lei",11);
var hmm=new Student("Han Meimei",12);
console.log(lilei);
console.log(hmm);
lilei.intr();
hmm.intr();

 


免責聲明!

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



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