成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

前端百題斬——原型、構造函數和實例之間的奇妙關系

開發 前端
每個對象都包含一個原型屬性(prototype),用于關聯另一個對象,關聯后就能使用那個對象的屬性和方法,這其實就是JavaScript的原型式繼承。

[[405146]]

16.1 基礎

原型

每個對象都包含一個原型屬性(prototype),用于關聯另一個對象,關聯后就能使用那個對象的屬性和方法,這其實就是JavaScript的原型式繼承。操作原型有如下方法:

(1)Object.create()

根據指定的原型創建新對象,原型可以是null

  1. const parentObj = { 
  2.     addfunction() { 
  3.         return this.a + this.b; 
  4.     } 
  5. }; 
  6.  
  7. const newObj = Object.create(parentObj, { 
  8.     a: { 
  9.         value: 10 
  10.     }, 
  11.     b: { 
  12.         value: 20 
  13.     } 
  14. }); 
  15.  
  16. console.log(newObj.add()); // 30 

(2)Object.getPrototypeOf()

返回指定對象的原型

  1. console.log(Object.getPrototypeOf(newObj)); // { add: [Functionadd] } 

(3)Object.setPrototypeOf()

設置一個指定的對象的原型到另一個對象或 null。

  1. const parentObj = { 
  2.     addfunction() { 
  3.         return this.a + this.b; 
  4.     } 
  5. }; 
  6.  
  7. const childObj = { 
  8.     a: 10, 
  9.     b: 20 
  10. }; 
  11.  
  12. Object.setPrototypeOf(childObj, parentObj); 
  13.  
  14. console.log(childObj.add()); // 30 
  15. console.log(Object.getPrototypeOf(childObj)); // { add: [Functionadd] } 

(4)Object.prototype.isPrototypeOf()

返回一個布爾值,用于檢查一個對象是否存在于另一個對象的原型鏈上。

  1. console.log(parentObj.isPrototypeOf(childObj)); // true 

構造函數

構造函數 ,是一種特殊的方法。主要用來在創建對象時初始化對象, 即為對象成員變量賦初始值,總與new運算符一起使用在創建對象的語句中。

實例

通過構造函數和new創建出來的對象,就是實例

16.2 三者之間關系

下面先看一張網上流傳的神圖,里面包含了原型、構造函數、實例三者之間的關系。

image-20210530114840237.png

上述圖中內容可以簡化為以下幾條:

  • 原型.constructor === 構造函數
  • 構造函數.prototype === 原型
  • 實例.__ proto __ === 原型

下面先來看一段代碼,這段代碼雖然簡短,但是里面卻包含了上述的原型、構造函數和實例。

  1. // 構造函數 
  2. function Test(a, b) { 
  3.     this.a = a; 
  4.     this.b = b; 
  5.  
  6. // 原型 
  7. Test.prototype.add = function() { 
  8.     return this.a + this.b; 
  9.  
  10. // 實例 
  11. const test = new Test(10, 20); 
  12. console.log(test.add()); // 30 

下面來利用上述代碼驗證一下這三者的關系

獲取實例內容

在實例中具備__ proto __ 屬性,可以看到里面的內容就是原型,從而驗證了實例.__ proto __ === 原型

獲取構造函數內容

獲取原型內容

 

在原型中具備constructor屬性,該屬性的內容就是構造函數,從而驗證了原型.constructor === 構造函數

本文轉載自微信公眾號「執鳶者」,可以通過以下二維碼關注。轉載本文請聯系執鳶者公眾號。

 

責任編輯:武曉燕 來源: 執鳶者
相關推薦

2021-10-19 22:23:05

typeof方式Instanceof

2021-05-09 22:00:59

TypeofInstanceof運算符

2021-05-30 19:02:59

變量對象上下文

2021-07-14 07:00:53

瀏覽器技巧前端

2021-06-09 07:01:30

前端CallApply

2021-07-26 06:57:58

重繪回流前端

2021-07-26 05:01:55

瀏覽器渲染流程

2021-11-19 09:01:09

防抖節流前端

2021-10-18 09:01:01

前端賦值淺拷貝

2021-08-04 06:56:49

HTTP緩存前端

2021-06-07 07:01:43

js關鍵字運行

2021-07-05 07:02:33

前端跨域策略

2021-05-27 07:02:05

JavaScript代碼設施

2021-05-19 07:02:42

JS對象方法

2021-06-28 07:12:28

賦值淺拷貝深拷貝

2021-05-12 07:04:55

Js變量方式

2021-06-04 07:04:29

閉包JavaScript函數

2021-05-16 19:23:11

引用類型包裝

2021-06-16 07:03:37

New操作符函數

2021-07-19 07:02:10

瀏覽器進程單進程瀏覽器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品18久久久久久久 | 久久精品久久久久久 | 最新中文字幕在线 | 中文字幕精品一区久久久久 | 欧美一区二区三区视频在线 | 日韩欧美理论片 | 午夜精品一区二区三区在线播放 | 久久久久久一区 | 91av免费版 | 日韩aⅴ片 | 不卡视频一区二区三区 | 色综合99 | 欧美成人一区二区 | 日韩a在线 | 亚洲精品无人区 | 97人澡人人添人人爽欧美 | 欧美video | 欧美日韩精品在线一区 | 日韩欧美在线观看视频网站 | 国产精品欧美一区二区三区不卡 | 国产精品免费观看视频 | 91精品国产欧美一区二区 | 成人在线免费观看 | 久久久久久免费精品一区二区三区 | 免费看爱爱视频 | 日韩毛片 | 爱爱视频日本 | 国产一区二区精品 | 国产激情片在线观看 | 九九热视频这里只有精品 | 狠狠色综合久久丁香婷婷 | 人碰人操 | 玖草资源 | 欧美精品久久 | 亚洲一二三区在线观看 | 日韩国产中文字幕 | 亚洲精品成人网 | 国产精品精品3d动漫 | 99精品视频免费观看 | 久久精品福利视频 | 久久久久久久一区二区 |