javascript原型prototype

來源:互聯網
上載者:User

標籤:

原型和原型鏈的故事

相關文章: 為什麼原型繼承很重要

先來看看一段小代碼用以引入要講的小故事。

    function Foo() {};    var f1 = new Foo();    Foo.prototype.label = "樂正闖皇";    alert(f1.label);    //output: 樂正闖皇    alert(Foo.label);   //output: undefined

Why? 為什嗎?

下面來聊聊JavaScript中的原型和原型鏈種種。

函數對象的prototype並不作用於原型鏈尋找過程中,該原型僅用於由該函數建立的對象/執行個體繼承的屬性,而函數本身並不使用相關聯的原型。

但,一旦函數他自己本身就是個object的時候,它就繼承了它建立者的功能的原型。

值得注意的是:我們使用Foo.prototype設定函數Foo建立的所有對象的屬性。我們不說f1.prototype設定屬性為f1。這是一個非常重要的,一點要記住!

再來個例子,更清晰的解釋這句話:

    function foo() {}    f1 = new foo();    f2 = new foo();    foo.prototype.x = "hello";    f1.x  => "hello"    f2.x  => "hello";    f1.x = "goodbye";   //setting f1.x hides foo.prototype.x    f1.x  => "goodbye"  //hides "hello" for f1 only    f2.x  => "hello"    delete f1.x    f1.x  => "hello";   //foo.prototype.x is visible again to f1.

國外大佬對它兩的故事有更深的理解->傳送門

《javascript的閉包》

javascript原型prototype

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.