最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript原型鏈詳解

 更新時(shí)間:2021年11月04日 17:23:40   作者:在下月亮有何貴干  
這篇文要給大家介紹的是JavaScript原型鏈,文章主要介紹內(nèi)容有構(gòu)造函數(shù)、屬性Prototype、屬性Prototype、屬性__proto__、訪問原型上的方法等問題,需要的朋友可以參考一下文章的詳細(xì)內(nèi)容

1、構(gòu)造函數(shù)和實(shí)例

假設(shè)你聲明一個(gè)方法叫做Foo() ,那么我們可以通過new Foo()來聲明實(shí)例。

    function Foo() {
      console.log("我是一個(gè)構(gòu)造方法");
    }
    const f1 = new Foo();

現(xiàn)在你可以很清晰的明白Foo()是構(gòu)造函數(shù),f1是它的實(shí)例。

2、屬性Prototype

Foo()這個(gè)構(gòu)造函數(shù)是一個(gè)方法。

方法也是對象數(shù)據(jù)類型,所以可以說方法是個(gè)對象。

對象就有屬性,不過方法有自己特殊的一個(gè)屬性,叫做prototype,其他對象沒有哦。

這個(gè)屬性會(huì)指向一個(gè)原型對象(Foo.prototype),而原型對象也會(huì)有一個(gè)自己的屬性叫做constructor,指向?qū)傩园艘粋€(gè)指針,指回原構(gòu)造函數(shù)。

 

   function Foo() {
      console.log("我是一個(gè)構(gòu)造方法");
    }
    const f1 = new Foo();

    console.log(Foo.prototype);//Foo的原型對象
    console.log(f1.prototype);//f1沒有 underfied


3、屬性__proto__

上文的prototype是給構(gòu)造函數(shù)的所有實(shí)例提供共享方法和屬性的。

實(shí)例又是怎么訪問到共享方法和屬性的呢?

f1實(shí)例沒有prototype,而有一個(gè)屬性__proto__,這是所有對象都有的屬性,它指向到構(gòu)造自己的構(gòu)造函數(shù)的原型對象,然后js這個(gè)語言就是根據(jù)這個(gè)屬性來讓實(shí)例訪問到共享屬性和方法的

Foo是f1的構(gòu)造函數(shù),Foo.prototypeFoo的原型對象,所以f1.__proto__指向Foo.prototype

    function Foo() {
      console.log("我是一個(gè)構(gòu)造方法");
    }

    const f1 = new Foo();

    console.log(Foo.prototype);
    console.log(f1.__proto__);


4、訪問原型上的方法

Foo這個(gè)構(gòu)造函數(shù)如果希望自己的實(shí)例能夠擁有同一個(gè)屬性,比如name,就在自己的原型對象上加上。

 

   function Foo() {
      console.log("我是一個(gè)方法");
    }

    Foo.prototype.name = "我是Foo創(chuàng)造的實(shí)例共享的屬性";

    const f1 = new Foo();
    const f2 = new Foo();

    console.log(f1.name);//我是Foo創(chuàng)造的實(shí)例共享的屬性
    console.log(f2.name);//我是Foo創(chuàng)造的實(shí)例共享的屬性


5、構(gòu)造函數(shù)也有__proto__

上面說所有對象都有__proto__ ,F(xiàn)oo是函數(shù)也是對象啊,所以Foo.__proto__是啥呢?

那就去找Foo的構(gòu)造函數(shù)是誰呢,F(xiàn)oo是一個(gè)函數(shù),擁有函數(shù)特有的方法和屬性,創(chuàng)造的它的構(gòu)造函數(shù)就是Function,這個(gè)js自帶的的一個(gè)構(gòu)造函數(shù),它的Function.prototype給所有js中你創(chuàng)建的函數(shù)提供函數(shù)自帶的一些公共方法和屬性。

所以Foo.__proto__指向Funtion.prototype

6、構(gòu)造函數(shù)的原型也有__proto__

Foo.prototype也是對象,所以它也有__proto__。

每當(dāng)我們要找__proto__,就得找它的構(gòu)造函數(shù),Foo.prototype是個(gè)對象,純對象,所以它的構(gòu)造函數(shù)是Object,那么Object的原型就是Object.prototype。

Foo.prototype.__proto__指向Object.prototype

7、Object.prototype這個(gè)原型對象很特殊

Array、String、Funtion、Object這些構(gòu)造函數(shù)都是函數(shù),
都是Funtion構(gòu)造函數(shù)的實(shí)例,
Array.__proto__ 、String.__proto__ 、Funtion.__proto__ 、Object.__proto__指向Funtion.prototype原型,
可以調(diào)用Funtion.prototype原型的一些公共方法,
例如都可以調(diào)用.name查看自己的函數(shù)名字。

Array.prototypeString.prototype 、Funtion.prototype這些原型對象都是對象,
都是Object構(gòu)造函數(shù)的實(shí)例,
Array.prototype.__proto__ 、String.prototype.__proto__ 、Funtion.prototype.__proto__指向Object.prototype原型,
所以可以調(diào)用Object.prototype這個(gè)原型對象的公共方法,

Object.prototype有些特殊,它雖然是對象,但是并不是Object自己的實(shí)例,
Object.prototype.__proto__指向null,作為原型鏈的終點(diǎn)

8、總結(jié)

方法,也就是函數(shù),才有prototype,就是方法的原型。
所以實(shí)例,一般都會(huì)有個(gè)對應(yīng)的構(gòu)造方法,也就是構(gòu)造函數(shù),實(shí)例的__proto__指向構(gòu)造方法的原型。
js有很多自帶的構(gòu)造方法,例如Array、String、Funtion、Object,都是根據(jù)js一些對象類型分配的,他們的原型上提供了許多封裝好的常用方法。
所有構(gòu)造方法本身是函數(shù),是Funtion這個(gè)js自帶構(gòu)造函數(shù)的實(shí)例。
除了Object.prototype,所有構(gòu)造方法的原型本身是對象,是Object這個(gè)js自帶構(gòu)造函數(shù)的實(shí)例。
Object.prototype.__prototype指向null,作為原型鏈終點(diǎn)。

到此這篇關(guān)于JavaScript原型鏈詳解的文章就介紹到這了,更多相關(guān)JavaScript原型鏈內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Javascript 常見的高階函數(shù)詳情

    Javascript 常見的高階函數(shù)詳情

    這篇文章主要介紹了Javascript 常見的高階函數(shù)的相關(guān)資料,高階函數(shù),英文叫 Higher Order function。一個(gè)函數(shù)可以接收另外一個(gè)函數(shù)作為參數(shù),這種函數(shù)就叫做高階函數(shù),需要的朋友可以參考一下
    2021-09-09
  • 微信小程序返回多級頁面的實(shí)現(xiàn)方法

    微信小程序返回多級頁面的實(shí)現(xiàn)方法

    這篇文章主要介紹了微信小程序返回多級頁面的實(shí)現(xiàn)方法的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-10-10
  • 微信小程序 底部導(dǎo)航欄目開發(fā)資料

    微信小程序 底部導(dǎo)航欄目開發(fā)資料

    這篇文章主要介紹了微信小程序 底部導(dǎo)航欄目開發(fā)資料的相關(guān)資料,微信小程序底部想要有一個(gè)漂亮的導(dǎo)航欄目,不知道怎么制作,于是百度找到了本篇文章,分享給大家,需要的朋友可以參考下
    2016-12-12
  • JavaScript?鍵盤事件的處理及屬性詳解

    JavaScript?鍵盤事件的處理及屬性詳解

    這篇文章主要為大家介紹了JavaScript?鍵盤事件的處理及屬性詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Javascript閉包使用場景原理詳細(xì)

    Javascript閉包使用場景原理詳細(xì)

    這篇文章主要介紹了Javascript閉包的使用場景,  由于在Javascript語言中,只有函數(shù)內(nèi)部的子函數(shù)才能讀取局部變量,閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。所以,在本質(zhì)上,閉包就是將函數(shù)內(nèi)部和函數(shù)外部連接起來的一座橋梁,下面一起進(jìn)入文化在哪個(gè)了解文章內(nèi)容
    2021-11-11
  • 手寫實(shí)現(xiàn)JS中的new

    手寫實(shí)現(xiàn)JS中的new

    這篇文章主要介紹JS中的new,new 運(yùn)算符創(chuàng)建一個(gè)用戶定義的對象類型的實(shí)例或具有構(gòu)造函數(shù)的內(nèi)置對象的實(shí)例。下面我們一起來看看我呢很臟具體內(nèi)容的詳細(xì)介紹,需要的朋友可以參考一下
    2021-11-11
  • 微信小程序 PHP后端form表單提交實(shí)例詳解

    微信小程序 PHP后端form表單提交實(shí)例詳解

    這篇文章主要介紹了微信小程序 PHP后端form表單提交實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 微信小程序 Flex布局詳解

    微信小程序 Flex布局詳解

    這篇文章主要介紹了微信小程序 Flex布局詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • 微信小程序 wx.uploadFile在安卓手機(jī)上面the same task is working問題解決

    微信小程序 wx.uploadFile在安卓手機(jī)上面the same task is working問題解決

    這篇文章主要介紹了微信小程序 wx.uploadFile在安卓手機(jī)上面the same task is working問題解決的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 微信小程序 地圖map詳解及簡單實(shí)例

    微信小程序 地圖map詳解及簡單實(shí)例

    這篇文章主要介紹了微信小程序 地圖map詳解及簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-01-01

最新評論

府谷县| 玉门市| 津市市| 钟山县| 县级市| 新龙县| 肃南| 禄劝| 浦江县| 宿迁市| 十堰市| 息烽县| 唐山市| 青河县| 共和县| 南部县| 囊谦县| 金门县| 岐山县| 皮山县| 阿坝县| 木里| 阳山县| 朝阳区| 二连浩特市| 武功县| 多伦县| 抚宁县| 红河县| 武清区| 德庆县| 兴宁市| 晋中市| 保德县| 札达县| 临沧市| 穆棱市| 沧州市| 嘉善县| 房产| 海安县|