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

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

    JavaScript中的原型鏈prototype詳解

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

      1.__proto__。可以通過對象的__proto__屬性來訪問其原型對象。該屬性僅在Firefox、Safari和Chrome中得到支持,在IE和Opera中不支持。

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

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

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

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

      var p = {x:1};

      var o = Object.create(p);

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

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

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

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

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

      而對于所有用new操作符創(chuàng)建的對象而言,其prototype對象均為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)建對象的過程如下:

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

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

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

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

      復(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對象的詳解和使用方法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

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

    主站蜘蛛池模板: 国产精品爱啪在线线免费观看| 91精品国产自产在线观看| 精品精品国产高清a毛片牛牛| 久久99精品久久久久久齐齐| 国产精品三级在线| 日韩欧精品无码视频无删节 | 欧美人与性动交α欧美精品成人色XXXX视频 | 老司机精品影院91| 777欧美午夜精品影院| 999久久久免费精品国产| 亚洲国产精品无码av| 亚洲午夜精品一级在线播放放 | 亚洲精品V欧洲精品V日韩精品| 久久国产成人精品国产成人亚洲| 亚洲精品欧美综合| 99久久精品费精品国产一区二区 | 亚洲精品一级无码鲁丝片| 精品无码国产污污污免费网站国产| 日韩一级精品视频在线观看| 国产精品久久影院| 福利姬在线精品观看| 精品无码日韩一区二区三区不卡| 亚洲精品成人网久久久久久| 久久久久99精品成人片牛牛影视| 国产精品片在线观看手机版| 91精品国产91久久久久久蜜臀| 日本精品久久久久中文字幕| 国产亚洲一区二区精品| 国产在线精品一区二区不卡| 九九热这里只有在线精品视| 国产精品久久久久aaaa| 成人国内精品久久久久影院| 国产精品视频一区二区噜噜| 精品视频无码一区二区三区| 精品无码一区在线观看| 国产精品亚洲日韩欧美色窝窝色欲| 人人妻人人澡人人爽人人精品97| 亚洲AV无码久久精品狠狠爱浪潮 | 精品国产欧美一区二区三区成人| 国产亚洲美女精品久久久| 国产精品二区观看|