国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

一次性搞懂js中的原型與原型鏈

Freeman / 405人閱讀

摘要:每個原型都有一個屬性指向關(guān)聯(lián)的構(gòu)造函數(shù)由于實例對象可以繼承原型對象的屬性,所以實例對象也擁有屬性,同樣指向原型對象對應(yīng)的構(gòu)造函數(shù)。

構(gòu)造函數(shù):function Foo ( ) { };

實例對象:let f1=new Foo;

談到繼承時,JavaScript 只有一種結(jié)構(gòu):對象

每個函數(shù)都有 prototype 屬性,除了 Function.prototype.bind(),該屬性指向原型。

prototype
每一個JavaScript對象(null除外)在創(chuàng)建的時候就會與之關(guān)聯(lián)另一個對象,這個對象就是我們所說的原型,每一個對象都會從原型"繼承"屬性。

函數(shù)的 prototype 屬性指向了一個對象,這個對象正是調(diào)用該構(gòu)造函數(shù)而創(chuàng)建的實例的原型,也就是這個例子中的 f1 的原型。prototype帶有__proto__和constructor

proto
每一個JavaScript對象(除了 null )都具有的一個屬性,叫__proto__,這個屬性會指向了創(chuàng)建該對象的構(gòu)造函數(shù)的原型。
console.log(f1._proto_ === Foo.prototype) // true
constructor
每個原型都有一個 constructor 屬性指向關(guān)聯(lián)的構(gòu)造函數(shù)

由于實例對象可以繼承原型對象的屬性,所以實例對象也擁有constructor屬性,同樣指向原型對象對應(yīng)的構(gòu)造函數(shù)。

console.log(Foo.prototype.constructor === Foo);//true
console.log(f1.constructor === Foo);//true
console.log(f1.hasOwnProperty("constructor"));//false
原型鏈

JS在創(chuàng)建對象(不論是普通對象還是函數(shù)對象)的時候,都有一個叫做__proto__的內(nèi)置屬性,用于指向創(chuàng)建它的函數(shù)對象的原型對象prototype。以上面的例子為例:

console.log(fo.__proto__  === Foo.prototype)  //true

同樣Foo.prototype也有proto屬性

console.log(Foo.prototype.__proto__ === Object.prototype)  //true

Object.prototype對象也有proto屬性,但它比較特殊,為null

console.log(Object.prototype.__proto__ === null)

我們把這個有proto串起來的直到Object.prototype.proto為null的鏈叫做原型鏈。原型鏈的形成是真正是靠proto 而非prototype

總結(jié)

每個構(gòu)造函數(shù)都有一個原型對象

Foo.prototype

原型對象都包含一個指向構(gòu)造函數(shù)的指針

Foo.prototype.constructor === Foo

實例都包含一個指向原型對象的內(nèi)部指針

fo.__proto__  === Foo.prototype

更多文章請前往語雀

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/99520.html

相關(guān)文章

  • 一張圖讓自己搞懂(mēng)原型&原型

    摘要:要搞清這三種關(guān)系指向之間的關(guān)系拗口,其實也就是要搞懂,構(gòu)造函數(shù)由構(gòu)造函數(shù)操作創(chuàng)造出的實例對象和構(gòu)造函數(shù)的原型對象之間的關(guān)系。 寫在前面 這篇博客來源于,有天mentor突然傳給我了這張祖?zhèn)鞯膱D片,并且發(fā)誓一定要給我講清楚,然鵝在他的一番激情講解之后,他自己也被繞懵了...于是后來我決定整理一下似乎還有點清晰的思路,記錄一下我對這張圖的理解。作為一個小白,對于js中這些比較復雜的概念的理...

    CntChen 評論0 收藏0
  • 徹底搞懂JavaScript中的繼承

    摘要:這正是我們想要的太棒了毫不意外的,這種繼承的方式被稱為構(gòu)造函數(shù)繼承,在中是一種關(guān)鍵的實現(xiàn)的繼承方法,相信你已經(jīng)很好的掌握了。 你應(yīng)該知道,JavaScript是一門基于原型鏈的語言,而我們今天的主題 -- 繼承就和原型鏈這一概念息息相關(guān)。甚至可以說,所謂的原型鏈就是一條繼承鏈。有些困惑了嗎?接著看下去吧。 一、構(gòu)造函數(shù),原型屬性與實例對象 要搞清楚如何在JavaScript中實現(xiàn)繼承,...

    _ivan 評論0 收藏0
  • 搞懂 Javascript中this 指向及繼承原理

    摘要:共享原型鏈現(xiàn)在我們還有另一個對象如圖那么和其實是同一東西,也就是。改進通過第一節(jié)可以知道,我們可以通過原型鏈來解決重復創(chuàng)建的問題我們先創(chuàng)建一個士兵原型,然后讓士兵的指向士兵原型。所以這個是原型鏈繼承的缺點,原因是和指向同一個地址即父類的。 在理解繼承之前,需要知道 js 的三個東西: 什么是 JS 原型鏈 this 的值到底是什么 JS 的new 到底是干什么的 想閱讀更多優(yōu)質(zhì)文章...

    why_rookie 評論0 收藏0
  • 關(guān)于JS原型的理解。

    摘要:的原型鏈,需要深刻的研究才能搞懂。對象都是通過函數(shù)即構(gòu)造函數(shù)創(chuàng)建的。即這里的成為隱式原型。而構(gòu)造函數(shù)的屬性指向自身。這個對象的構(gòu)造函數(shù)的是一個對象。走到原型鏈的終結(jié)。 - JS是一個非常有魅力的語言也是一個比較煩人的語言,主要就是因為他的特殊性靈活性。 JS的原型鏈,需要深刻的研究才能搞懂。不要糾結(jié)細節(jié)吧。實在不行就按這個死背住,慢慢就理解了。總之吧就是一句話萬物皆對象。 結(jié)合這個圖示...

    vvpvvp 評論0 收藏0

發(fā)表評論

0條評論

Freeman

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<