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

前端百題斬之Typeof和Instanceof

開發(fā) 前端
typeof方法雖然很好用,但該方法有一定的局限性:對(duì)于對(duì)象、數(shù)組、null 返回的值是 object。

 [[398260]]

1.1 typeof

1.1.1 基礎(chǔ)介紹

typeof是一個(gè)運(yùn)算符,其有兩種使用方式:(1)typeof(表達(dá)式);(2)typeof 變量名;返回值是一個(gè)字符串,用來說明變量的數(shù)據(jù)類型;所以可以用此來判斷number, string, object, boolean, function, undefined, symbol 這七種類型,每種情況返回的內(nèi)容如下表所示:

類型 結(jié)果
String 'string'
Number 'number'
Boolean 'boolean'
Undefined 'undefined'
Object 'object'
function函數(shù) 'function'
Symbol 'symbol'

1.1.2 原理進(jìn)階

typeof方法雖然很好用,但該方法有一定的局限性:對(duì)于對(duì)象、數(shù)組、null 返回的值是 object。比如typeof(window),typeof(document),typeof(null)返回的值都是object,這是為什么呢?這就要從底層說起。js在底層存儲(chǔ)變量的時(shí)候,會(huì)在變量的機(jī)器碼的低位1-3位存儲(chǔ)其類型信息:

  1. 000:對(duì)象;
  2. 010:浮點(diǎn)數(shù);
  3. 100:字符串;
  4. 110:布爾值;
  5. 1:整數(shù);
  6. 特例:

(1)null所有機(jī)器碼均為0

(2)undefined:用 ?2^30 整數(shù)來表示

typeof就是通過機(jī)器碼判斷類型,由于null的所有機(jī)器碼均為0,該機(jī)器碼和對(duì)象一樣,因此直接被當(dāng)作對(duì)象來看待,所以通過typeof就不能夠判斷區(qū)分對(duì)象還有null了。

1.1.3 實(shí)驗(yàn)

說了這么多,還沒有進(jìn)行驗(yàn)證,下面就逐一驗(yàn)證一下:

  1. // 字符串 
  2. console.log(typeof('lili')); // string 
  3. // 數(shù)字 
  4. console.log(typeof(1)); // number 
  5. // 布爾值 
  6. console.log(typeof(true)); // boolean 
  7. // undefined 
  8. console.log(typeof(undefined)); // undefined 
  9. // 對(duì)象 
  10. console.log(typeof({})); // object 
  11. // 數(shù)組 
  12. console.log(typeof([])); // object 
  13. // null 
  14. console.log(typeof(null)); // object 
  15. // 函數(shù) 
  16. console.log(typeof(() => {})); // function 
  17. // Symbol值 
  18. console.log(typeof(Symbol())); // symbol 

1.2 instanceof

1.2.1 基礎(chǔ)介紹

instanceof運(yùn)算符用于檢測(cè)構(gòu)造函數(shù)的 prototype屬性是否出現(xiàn)在某個(gè)實(shí)例對(duì)象的原型鏈上,返回值為布爾值,用于指示一個(gè)變量是否屬于某個(gè)對(duì)象的實(shí)例。其語法如下所示:

  1. object instanceof constructor 

1.2.2 原理進(jìn)階

instanceof 主要的實(shí)現(xiàn)原理就是只要右邊變量的 prototype 在左邊變量的原型鏈上即可。因此,instanceof 在查找的過程中會(huì)遍歷左邊變量的原型鏈,直到找到右邊變量的 prototype,如果查找失敗,則會(huì)返回 false.步驟如下所示:

  1. 獲取左邊變量的隱式原型(即:__ proto __ ,可通過Object.getPrototypeOf()獲取);
  2. 獲取右邊變量的顯示原型(即:prototype);
  3. 進(jìn)行判斷,比較leftVal. __ proto __ . __ proto __ …… === rightVal.prototype,相等則返回true,否則返回false。

1.2.3 實(shí)驗(yàn)

上面講述了instanceof的簡(jiǎn)單使用和其原理,下面簡(jiǎn)單使用一下并驗(yàn)證一下該原理:

  1. const arr = [1, 2]; 
  2. // 判斷Object的prototype有沒有在數(shù)組的原型鏈上 
  3. console.log(arr instanceof Object); // true 
  4. // 數(shù)組arr的原型 
  5. const proto1 = Object.getPrototypeOf(arr); 
  6. console.log(proto1); // [] 
  7. // 數(shù)組arr的原型的原型 
  8. const proto2 = Object.getPrototypeOf(proto1); 
  9. console.log(proto2); // [] 
  10. // Object的prototype 
  11. console.log(Object.prototype); 
  12. // 判斷arr的原型是否與Object的prototype相等 
  13. console.log(proto1 === Object.prototype); // false 
  14. // 判斷arr的原型的原型是否與Object的prototype相等 
  15. console.log(proto2 === Object.prototype); // true 

本文轉(zhuǎn)載自微信公眾號(hào)「執(zhí)鳶者」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系執(zhí)鳶者公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: 執(zhí)鳶者
相關(guān)推薦

2021-10-19 22:23:05

typeof方式Instanceof

2021-07-26 06:57:58

重繪回流前端

2021-06-28 07:12:28

賦值淺拷貝深拷貝

2021-05-12 07:04:55

Js變量方式

2021-07-05 07:02:33

前端跨域策略

2021-05-19 07:02:42

JS對(duì)象方法

2021-06-09 07:01:30

前端CallApply

2021-05-30 19:02:59

變量對(duì)象上下文

2021-06-11 06:54:34

原型構(gòu)造函數(shù)

2021-11-03 06:57:41

瀏覽器Jsonp安全

2021-12-03 06:59:23

操作符驗(yàn)證點(diǎn)屬性

2021-07-08 07:01:53

瀏覽器安全前端

2015-12-24 10:05:39

JavaScripttypeofinstanceof

2021-10-18 09:01:01

前端賦值淺拷貝

2021-08-04 06:56:49

HTTP緩存前端

2021-07-14 07:00:53

瀏覽器技巧前端

2021-08-02 06:49:46

HTTP網(wǎng)絡(luò)模型

2021-07-26 05:01:55

瀏覽器渲染流程

2021-11-19 09:01:09

防抖節(jié)流前端

2021-06-04 07:04:29

閉包JavaScript函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 超碰在线免费av | 亚洲a毛片 | 久久久91精品国产一区二区三区 | 欧美不卡视频一区发布 | 欧美亚洲国产日韩 | 国产欧美精品在线观看 | 日韩中文字幕在线观看 | 深爱激情综合 | 午夜影院免费体验区 | 一区二区三区久久久 | 夜夜艹 | 成人精品视频在线观看 | 天天干天天操 | 99精品国产一区二区三区 | 精品1区2区 | 日韩一区二区久久 | 国产精品成人一区二区 | 天天躁日日躁狠狠很躁 | 浴室洗澡偷拍一区二区 | 日韩视频在线观看一区二区 | 国产精品久久久久久久久久尿 | 亚洲精品黄色 | 91精品久久久久久久久久入口 | 国产69久久精品成人看动漫 | 亚洲国产精品一区二区第一页 | 国产精品久久久久久久久污网站 | 久久99久久久久 | 国产黄色大片在线观看 | 一区二区在线 | 91.xxx.高清在线 | 欧美一级特黄aaa大片在线观看 | 99热热99 | 成人福利在线 | 亚洲精选久久 | 亚洲免费一区 | 日本不卡一区二区三区在线观看 | 欧洲一区二区三区 | 亚洲精品一区二区三区四区高清 | 午夜精品久久久久久久久久久久久 | 在线色网站 | 免费超碰 |