• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. JavaScript中的原型鏈prototype詳解

        時間:2024-08-24 00:00:43 JavaScript 我要投稿
        • 相關推薦

        JavaScript中的原型鏈prototype詳解

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

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

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

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

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

          復制代碼 代碼如下:

          var p = {x:1};

          var o = Object.create(p);

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

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

          復制代碼 代碼如下:

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

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

          而對于所有用new操作符創建的對象而言,其prototype對象均為constructor函數的prototype屬性:

          復制代碼 代碼如下:

          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操作符創建對象的過程如下:

          1.創建一個新的空對象。

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

          3.將這個對象作為this參數,執行constructor函數。

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

          復制代碼 代碼如下:

          var t = new Test(38);

          var t2 = new Test(68);

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

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

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【JavaScript中的原型鏈prototype詳解】相關文章:

        理解JavaScript原型鏈教程09-02

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

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

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

        詳解SEO外鏈本質10-24

        JavaScript類定義原型方法的兩種實現的區別07-11

        JavaScript中的with關鍵字07-24

        在Java中執行JavaScript代碼07-14

        Javascript中typeof 用法歸納09-27

        抽象語法樹在JavaScript中的應用08-18

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 在线看免费的国产大片 | 中文字幕亚洲无线码高清 | 欧美日韩国产福利 | 中文字幕第1页亚洲 | 亚洲国产精品va在线观看香蕉 | 中文字幕在线观看日韩少妇 |

            JavaScript中的原型鏈prototype詳解

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

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

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

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

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

              復制代碼 代碼如下:

              var p = {x:1};

              var o = Object.create(p);

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

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

              復制代碼 代碼如下:

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

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

              而對于所有用new操作符創建的對象而言,其prototype對象均為constructor函數的prototype屬性:

              復制代碼 代碼如下:

              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操作符創建對象的過程如下:

              1.創建一個新的空對象。

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

              3.將這個對象作為this參數,執行constructor函數。

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

              復制代碼 代碼如下:

              var t = new Test(38);

              var t2 = new Test(68);

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

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