久久久久无码精品,四川省少妇一级毛片,老老熟妇xxxxhd,人妻无码少妇一区二区

JavaScript中的原型鏈prototype詳解

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

JavaScript中的原型鏈prototype詳解

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

  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屬性。

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

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

  var p = {x:1};

  var o = Object.create(p);

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

  對于所有用字面量創(chuàng)建的對象而言,其prototype對象均為Object.prototype(作為一個(gè)特殊對象,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)建一個(gè)新的空對象。

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

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

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

  復(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