1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. JavaScript中的原型鏈prototype詳解

        時(shí)間:2020-11-17 17:18:29 JavaScript 我要投稿

        JavaScript中的原型鏈prototype詳解

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

          1.__proto__。可以通過對(duì)象的__proto__屬性來訪問其原型對(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。通過先獲取對(duì)象的constructor函數(shù),然后再通過訪問constructor函數(shù)的prototype屬性來訪問到原型對(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沒有原型對(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ì)象的過程如下:

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

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

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

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

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>