成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

關(guān)于JS的原型鏈的理解。

vvpvvp / 2131人閱讀

摘要:的原型鏈,需要深刻的研究才能搞懂。對象都是通過函數(shù)即構(gòu)造函數(shù)創(chuàng)建的。即這里的成為隱式原型。而構(gòu)造函數(shù)的屬性指向自身。這個對象的構(gòu)造函數(shù)的是一個對象。走到原型鏈的終結(jié)。

- JS是一個非常有魅力的語言也是一個比較煩人的語言,主要就是因?yàn)樗奶厥庑造`活性。

JS的原型鏈,需要深刻的研究才能搞懂。不要糾結(jié)細(xì)節(jié)吧。實(shí)在不行就按這個死背住,慢慢就理解了??傊删褪且痪湓?strong>萬物皆對象。

結(jié)合這個圖示仔細(xì)理解吧。在你搞懂后你會發(fā)現(xiàn)。很嗨很刺激!

下面是必須記住的點(diǎn)。基礎(chǔ)知識不用說了吧。

對象都是通過函數(shù)(即構(gòu)造函數(shù))創(chuàng)建的。
函數(shù)也是一個對象,即屬性的集合,所以也可以對函數(shù)進(jìn)行自定義屬性。

每個函數(shù)默認(rèn)的有一個prototype屬性。
這個prototype的屬性值是一個對象,默認(rèn)的只有一個construct屬性指向函數(shù)本身。

每個對象都有一個隱藏的屬性——“__proto__”,這個屬性引用了創(chuàng)建這個對象的函數(shù)的prototype。即:fn.__proto__ === Fn.prototype
這里的"__proto__"成為“隱式原型”。

對象的construct屬性指向構(gòu)造函數(shù)。而構(gòu)造函數(shù)的construct屬性指向自身。

回答什么是JS的原型鏈?

訪問一個對象的屬性時,先在基本屬性中查找,如果沒有,再沿著__proto__這條鏈向上找,這就是原型鏈。這個對象的__proto__等于這個對象構(gòu)造方法的prototype。這個對象的構(gòu)造函數(shù)的prototype是一個對象。 這個對象是被Object()創(chuàng)建出來的。(Object()是JS內(nèi)部定義好的。) 所以它的__proto__就等于Object.prototype。Object.prototype等于null。到此就是原型鏈的終結(jié)。

然后呢還有一個點(diǎn)。

函數(shù)可以是一個普通函數(shù)也可以作為構(gòu)造函數(shù)去創(chuàng)建對象。 當(dāng)這個時候構(gòu)造函數(shù)就和Object()函數(shù)是一個作用:作為構(gòu)造函數(shù)去生成對象。
普通構(gòu)造函數(shù)和Object一樣的 他既是函數(shù)也是對象。他的__proto__指向于Function.prototype。這也是JS內(nèi)部定義好的。Function.__proto__指向Function.prototype有點(diǎn)雞生蛋蛋生雞的意思(Function是被自己創(chuàng)建的)。這里是一個循環(huán)引用。 Function.prototype也是一個對象,他的__proto__指向于Object.prototype。Object.prototype等于null。走到原型鏈的終結(jié)。

以上就是我對JS原型鏈的理解,有什么錯誤的地方希望大家指出。

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/109312.html

相關(guān)文章

  • javascript-從toString方法在判斷復(fù)雜數(shù)據(jù)類型上妙用,引申到對原型理解

    摘要:所以,當(dāng)我們使用時,不能進(jìn)行復(fù)雜數(shù)據(jù)類型的判斷,因?yàn)樗{(diào)用的是,雖然也繼承自,但在上重寫了,而我們通過實(shí)際上是通過原型鏈調(diào)用了。 關(guān)于 toString 方法在有關(guān)js的開發(fā)中使用應(yīng)該是相當(dāng)廣泛的,這兩天在看jQuery的源碼,從 toString 本身了解與鞏固了不少知識,寫出來與大家一同分享。首先先上一段代碼: var arr=[1,2,3]; toString.call(arr)...

    sean 評論0 收藏0
  • 從一道題解讀JS原型

    摘要:明確重要的一點(diǎn),這個連接存在于實(shí)例與構(gòu)造函數(shù)的原型對象之間,而不是存在于實(shí)例與構(gòu)造函數(shù)之間。相當(dāng)于重新創(chuàng)建了,指向構(gòu)造函數(shù)這一部分相當(dāng)于是重新在原型對象中創(chuàng)建了一個屬性,同時指向構(gòu)造函數(shù)。 之前對js原型和原型鏈的理解一直覺得很繞,繞來繞去的,在看了《JavaScript高級程序設(shè)計(jì)》和各種文章之后,終于對原型和原型鏈有了初步的了解,可是還是沒有很深入的了解,今次通過以前段時間遇到的一...

    harryhappy 評論0 收藏0
  • 詳解js繼承(二)

    摘要:寄生組合式繼承終于寫到最后一個繼承了,我們在之前講了種繼承方式,分別是原型鏈,借用構(gòu)造函數(shù)繼承,組合繼承,原型式繼承,寄生式繼承,其中,前三種聯(lián)系比較緊密,后面兩種也比較緊密,而我們要講的最后一種,是和組合繼承還有寄生式繼承有關(guān)系的。 前言 趁周末結(jié)束之前趕緊先把坑填上。上回我們說到了原型鏈,并且留下了幾個思考題,先把答案公布一下。 在最后一個例子里,console.log(b1.c...

    evin2016 評論0 收藏0
  • JS基礎(chǔ)】原型對象那些事(二)

    摘要:只是構(gòu)造函數(shù)上的一個屬性,它是一個指針,指向原型對象,并不表示就是原型對象。在上一個例子中,就是一個對象,這個對象可以說是原生構(gòu)造函數(shù)的實(shí)例,所以也是一個對象,所以它也有屬性,不過它的指向也就是原型鏈的頂端,再往上就沒有了。 上一篇講了①原型對象是什么;②__proto__、prototype、constructor的關(guān)系;③原型對象的作用;④原型對象帶來的一些需要注意的問題; 沒理解...

    yanbingyun1990 評論0 收藏0

發(fā)表評論

0條評論

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