js之原型鏈的理解

來源:互聯網
上載者:User

標籤:技術分享   它的   http   通過   擴充   his   代碼   blog   執行個體   

        在js中,原型也是一個普通的對象,通過原型我們能夠實現對象的屬性繼承。

        首先,我們要明確參考型別有Array、Object、Function,這些參考型別都是能夠自由的擴充屬性。

1 var obj = {};2 obj.a = 10;3 obj.b = 20;4 5 obj;  //  Object {a: 10, b: 20}

        我們上面說的這幾個參考型別都有一個屬性__proto__,這是一個普通的對象。而這個__proto__屬性是指向它的建構函式的prototype屬性。我們可以在代碼中看一看。

 1 //  建構函式 2 function Foo(name, age) { 3     this.name=name;  4     this.age=age; 5 } 6  7 //  執行個體化一個Foo 8 var foo = new Foo("居客", 21); 9 10 //  我們看一下foo的屬性11 foo;

        可以看到在foo中除了name和age兩個屬性之外,還有一個__proto__屬性,點開這個屬性我們發現裡面有個建構函式Foo,同時我們進行以下的驗證。

        同時,對於所有的函數來說都有一個prototype屬性,這也是一個普通的對象,當我們執行個體化了一對象之後,在執行個體化出來的對象上找不到我們想要的方法的時候,這時候就會通過自身的__proto__屬性去它的建構函式的prototype屬性裡面去找有沒有這個方法,有的話就能夠調用,這也是為什麼能通過原型來完成繼承的原因。

var Foo = function(name) {    this.name = name;}Foo.prototype.Name = function() {    console.log(this.name);}var foo = new Foo(‘居客‘);foo.Name();  //  居客

         這就是對於原型以及原型鏈的基本的一些概念了,希望能有所協助。

 

js之原型鏈的理解

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.