<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • JavaScript中的原型鏈prototype詳解

    時(shí)間:2024-08-24 00:00:43 JavaScript 我要投稿
    • 相關(guān)推薦

    JavaScript中的原型鏈prototype詳解

      JavaScript中的繼承是通過(guò)原型鏈(prototype chain)來(lái)完成的:每個(gè)對(duì)象內(nèi)部都有另外一個(gè)對(duì)象作為其prototype而存在,對(duì)象從這個(gè)prototype中繼承屬性(property)。對(duì)于每個(gè)對(duì)象來(lái)說(shuō),可以用以下三種方式來(lái)訪問(wèn)其原型對(duì)象:

      1.__proto__。可以通過(guò)對(duì)象的__proto__屬性來(lái)訪問(wèn)其原型對(duì)象。該屬性僅在Firefox、Safari和Chrome中得到支持,在IE和Opera中不支持。

      2.Object.getPrototypeOf()。可以將對(duì)象作為參數(shù)傳入Object.getPrototypeOf()方法,執(zhí)行后即返回對(duì)象的原型對(duì)象。此方法僅在ECMAScript 5標(biāo)準(zhǔn)中得到支持。

      3.o.constructor.prototype。通過(guò)先獲取對(duì)象的constructor函數(shù),然后再通過(guò)訪問(wèn)constructor函數(shù)的prototype屬性來(lái)訪問(wèn)到原型對(duì)象。使用此方法的前提為:對(duì)象中存在指向構(gòu)造函數(shù)的constructor屬性。

      判斷兩個(gè)對(duì)象間是否存在原型鏈關(guān)系可以使用isPrototype()方法:

      復(fù)制代碼 代碼如下:

      var p = {x:1};

      var o = Object.create(p);

      console.log(p.isPrototypeOf(o));//true

      對(duì)于所有用字面量創(chuàng)建的對(duì)象而言,其prototype對(duì)象均為Object.prototype(作為一個(gè)特殊對(duì)象,Object.prototype沒(méi)有原型對(duì)象):

      復(fù)制代碼 代碼如下:

      var x = {a:18, b:28};

      console.log(x.__proto__);//Object {}

      而對(duì)于所有用new操作符創(chuàng)建的對(duì)象而言,其prototype對(duì)象均為constructor函數(shù)的prototype屬性:

      復(fù)制代碼 代碼如下:

      var x = {a:18, b:28};

      function Test(c){

      this.c = c;

      }

      Test.prototype = x;

      var t = new Test(38);

      console.log(t);//Object {c=38, a=18, b=28}

      console.log(t.__proto__);//Object {a=18, b=28}

      console.log(t.__proto__.__proto__);//Object {}

      JavaScript中使用new操作符創(chuàng)建對(duì)象的過(guò)程如下:

      1.創(chuàng)建一個(gè)新的空對(duì)象。

      2.將這個(gè)對(duì)象的__proto__屬性指向constructor函數(shù)的prototype屬性。

      3.將這個(gè)對(duì)象作為this參數(shù),執(zhí)行constructor函數(shù)。

      從上述創(chuàng)建過(guò)程可以得出結(jié)論:所有從同一個(gè)constructor函數(shù)中構(gòu)造出來(lái)的對(duì)象,其__proto__屬性(也即其原型對(duì)象)相等,也就是說(shuō),只存在一個(gè)原型對(duì)象:

      復(fù)制代碼 代碼如下:

      var t = new Test(38);

      var t2 = new Test(68);

      console.log(t === t2);//false

      console.log(t.__proto__ === t2.__proto__);//true

    【JavaScript中的原型鏈prototype詳解】相關(guān)文章:

    理解JavaScript原型鏈教程09-02

    JavaScript中push(),join() 函數(shù)實(shí)例詳解09-05

    詳解JavaScript中的splice()使用方法08-20

    Javascript中arguments對(duì)象的詳解和使用方法08-20

    詳解SEO外鏈本質(zhì)10-24

    JavaScript類定義原型方法的兩種實(shí)現(xiàn)的區(qū)別07-11

    JavaScript中的with關(guān)鍵字07-24

    在Java中執(zhí)行JavaScript代碼07-14

    Javascript中typeof 用法歸納09-27

    抽象語(yǔ)法樹(shù)在JavaScript中的應(yīng)用08-18

    主站蜘蛛池模板: 国产亚洲精品AA片在线观看不加载 | 亚洲国语精品自产拍在线观看| 精品第一国产综合精品蜜芽| 国产精品高清一区二区三区不卡| 午夜精品久久久内射近拍高清 | 久久亚洲精品无码播放| 99精品国产丝袜在线拍国语| 区亚洲欧美一级久久精品亚洲精品成人网久久久久| 麻豆精品久久久一区二区| 奇米精品视频一区二区三区| 欧美精品色精品一区二区三区| 色偷偷888欧美精品久久久| 国产精品区一区二区三在线播放| 亚洲国产小视频精品久久久三级| 国产成人精品在线观看| 麻豆精品久久久一区二区| 成人伊人精品色XXXX视频 | 成人精品视频成人影院| 国产精品欧美久久久天天影视| 亚洲精品午夜国产VA久久成人| 精品91自产拍在线观看二区| 四虎成人www国产精品| 99精品全国免费观看视频..| 久久亚洲精品人成综合网| 自拍偷自拍亚洲精品第1页| 亚洲国产高清精品线久久 | 亚洲精品麻豆av| 久久国产美女免费观看精品| 国产精品成人h片在线| 99久久精品无码一区二区毛片| 国产精品一区二区不卡| 99在线精品免费视频九九视| 久久精品国产亚洲av麻豆小说| 亚洲精品国产精品乱码不卡√ | 久久ww精品w免费人成| 无码人妻精品一区二区三| 午夜DY888国产精品影院| 中文精品人人永久免费| 中文字幕精品久久| 亚洲国产精品久久电影欧美| 久久久免费精品re6|