gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

JavaScript怎么判斷數據類型?8 種方式分享

JavaScript怎么判斷數據類型?本篇文章給大家分享JS 判斷數據類型的 8 種方式,有效幫助工作和面試,面試官看了微微一笑。

JavaScript怎么判斷數據類型?8 種方式分享

1、typeof

  • 只能識別基礎類型和引用類型

注意:nullNaNdocument.all 的判斷

console.log(typeof null); // object console.log(typeof NaN); // number console.log(typeof document.all); // undefined
登錄后復制


2、constructor

  • constuctor 指向創(chuàng)建該實例對象的構造函數

注意 nullundefined 沒有 constructor,以及 constructor 可以被改寫

String.prototype.constructor = function fn() {   return {}; };  console.log("云牧".constructor); // [Function: fn]
登錄后復制


3、instanceof

  • 語法:obj instanceof Type
  • 功能:判斷 obj 是不是 Type 類的實例,只可用來判斷引用數據
  • 實現思路: Type 的原型對象是否是 obj 的原型鏈上的某個對象
  • 注意:右操作數必須是函數或者 class

手寫 instanceof

function myInstanceof(Fn, obj) {   // 獲取該函數顯示原型   const prototype = Fn.prototype;   // 獲取obj的隱式原型   let proto = obj.__proto__;   // 遍歷原型鏈   while (proto) {     // 檢測原型是否相等     if (proto === prototype) {       return true;     }     // 如果不等于則繼續(xù)往深處查找     proto = proto.__proto__;   }   return false; }
登錄后復制


4、isPrototypeof

  • 是否在實例對象的原型鏈上
  • 基本等同于 instanceof

console.log(Object.isPrototypeOf({})); // false console.log(Object.prototype.isPrototypeOf({})); // true  期望左操作數是一個原型,{} 原型鏈能找到 Object.prototype
登錄后復制


5、Object.prototype.toString

  • 利用函數動態(tài) this 的特性

function typeOf(data) {   return Object.prototype.toString.call(data).slice(8, -1); }  // 測試 console.log(typeOf(1)); // Number console.log(typeOf("1")); // String console.log(typeOf(true)); // Boolean console.log(typeOf(null)); // Null console.log(typeOf(undefined)); // Undefined console.log(typeOf(Symbol(1))); // Symbol console.log(typeOf({})); // Object console.log(typeOf([])); // Array console.log(typeOf(function () {})); // Function console.log(typeOf(new Date())); // Date console.log(typeOf(new RegExp())); // RegExp
登錄后復制


6、鴨子類型檢測

  • 檢查自身屬性的類型或者執(zhí)行結果的類型
  • 通常作為候選方案
  • 例子:kindofp-is-promise

p-is-promise:

const isObject = value =>   value !== null && (typeof value === "object" || typeof value === "function");  export default function isPromise(value) {   return (     value instanceof Promise ||     (isObject(value) && typeof value.then === "function" && typeof value.catch === "function")   ); }
登錄后復制

kindof:

function kindof(obj) {   var type;   if (obj === undefined) return "undefined";   if (obj === null) return "null";    switch ((type = typeof obj)) {     case "object":       switch (Object.prototype.toString.call(obj)) {         case "[object RegExp]":           return "regexp";         case "[object Date]":           return "date";         case "[object Array]":           return "array";       }      default:       return type;   } }
登錄后復制


7、Symbol.toStringTag

  • 原理:Object.prototype.toString 會讀取該值
  • 適用場景:需自定義類型
  • 注意事項:兼容性

class MyArray {   get [Symbol.toStringTag]() {     return "MyArray";   } }  const arr = new MyArray(); console.log(Object.prototype.toString.call(arr)); // [object MyArray]
登錄后復制


8、等比較

  • 原理:與某個固定值進行比較
  • 適用場景:undefinedwindowdocumentnull

underscore.js:

JavaScript怎么判斷數據類型?8 種方式分享

總結

方法 基礎數據類型 引用類型 注意事項
typeof × NaN、object、document.all
constructor √ 部分 可以被改寫
instanceof × 多窗口,右邊構造函數或者class
isPrototypeof × 小心 null 和 undefined
toString 小心內置原型
鴨子類型 不得已兼容
Symbol.toString Tag × 識別自定義對象
等比較 特殊對象

加餐:ES6 增強的 NaN

NaN 和 Number.NaN 特點

  • typeof 后是數字

  • 自己不等于自己

  • delete 不能被刪除

isNaN

  • 如果非數字,隱式轉換傳入結果如果是 NaN,就返回 true,反之返回 false

console.log(isNaN(NaN)); // true console.log(isNaN({})); // true
登錄后復制

Number.isNaN

  • 判斷一個值是否是數字,并且值是否等于 NaN

console.log(Number.isNaN(NaN)); // true console.log(Number.isNaN({})); // false
登錄后復制

其他判斷是否 NaN 的方法

function isNaNVal(val) {   return Object.is(val, NaN); }  function isNaNVal(val) {   return val !== val; }  function isNaNVal(val) {   return typeof val === "number" && isNaN(val); }  // 綜合墊片 if (!("isNaN" in Number)) {   Number.isNaN = function (val) {     return typeof val === "number" && isNaN(val);   }; }
登錄后復制


indexOf 和 includes

  • indexOf 不可查找 NaNincludes 則可以

const arr = [NaN];  console.log(arr.indexOf(NaN)); // -1 console.log(arr.includes(NaN)); // true
登錄后復制

【推薦學習:javascript高級教程】

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
视频在线观看免费高清| 国产精品国产三级国产专区51| 欧美性潮喷xxxxx免费视频看| 五月花丁香婷婷| 免费看涩涩视频| 国模私拍视频在线观看| 中文字幕第17页| 国产成人美女视频| 激情久久综合网| 裸体大乳女做爰69| www精品久久| 乱妇乱女熟妇熟女网站| 欧美激情国产精品日韩| 91av俱乐部| 九九九九九伊人| 男女激烈动态图| 大陆av在线播放| 久久久久久香蕉| 一级黄色大片儿| 国产 日韩 欧美在线| 国产一区亚洲二区三区| 不卡的av中文字幕| av动漫在线免费观看| 欧美日韩黄色一级片| 无码少妇一区二区三区芒果| 91在线第一页| 欧美 国产 综合| 在线播放免费视频| 日韩免费视频播放| 日本在线观看视频一区| av免费观看大全| 91免费视频污| 亚洲 高清 成人 动漫| 亚洲图片 自拍偷拍| 欧美日本视频在线观看| 国产精品久久久久久9999| 好吊妞无缓冲视频观看| 无套内谢丰满少妇中文字幕 | 国产夫妻自拍一区| 国产wwwxx| 乱熟女高潮一区二区在线| 免费在线观看毛片网站| 99久久久精品视频| 99日在线视频| 欧美日韩在线不卡视频| 99久久久精品视频| 视频一区二区视频| www.com黄色片| 欧美激情国产精品日韩| 免费一级淫片aaa片毛片a级| 国产精品区在线| 91香蕉视频污版| 日本免费黄视频| 国产精品国产亚洲精品看不卡| 欧美国产日韩在线视频| 日本xxxx黄色| 男人女人黄一级| 日日摸天天爽天天爽视频| 男女猛烈激情xx00免费视频| 熟妇熟女乱妇乱女网站| 色18美女社区| 亚洲一级片av| 两性午夜免费视频| 亚洲精品视频三区| 久久精品一卡二卡| 黄色网址在线免费看| 深爱五月综合网| 老司机午夜免费福利视频| 国产91porn| www.av蜜桃| 国产一区二区三区精彩视频| 免费在线激情视频| 国产精品999视频| 成人毛片视频网站| 男人插女人下面免费视频| 日本中文字幕高清| 日韩精品在线播放视频| 国产精品va在线观看无码| 成人性生活视频免费看| 北条麻妃在线观看| 欧美午夜精品理论片| 亚洲成年人专区| 久草热视频在线观看| 国产a视频免费观看| 亚洲欧美日韩精品一区| 日本美女久久久| 亚洲国产精品无码观看久久| 日本在线视频www| 亚洲午夜激情影院| 国产精彩视频一区二区| 国产一区亚洲二区三区| 91精产国品一二三产区别沈先生| 免费在线精品视频| 91精品91久久久中77777老牛| 毛片毛片毛片毛片毛片毛片毛片毛片毛片| 亚洲精品视频导航| 少妇大叫太大太粗太爽了a片小说| 久久久999免费视频| 中文字幕 91| 极品美女扒开粉嫩小泬| 福利片一区二区三区| 日韩av高清在线看片| 九九热免费在线观看| 精品人妻少妇一区二区| 99精品999| 国产真实乱子伦| 日韩 欧美 视频| 在线视频一二区| 国产真实乱子伦| 成人一区二区av| 亚洲美女性囗交| 一本色道无码道dvd在线观看| 中国老女人av| 亚洲涩涩在线观看| 国产熟人av一二三区| 国产av人人夜夜澡人人爽麻豆| 少妇一级淫免费播放| 免费成人在线视频网站| 欧洲精品在线播放| 久久精品国产精品亚洲精品色 | 日本新janpanese乱熟| 特级西西444| 久久久无码中文字幕久...| 国产九九在线观看| 超碰av在线免费观看| 99视频精品免费| chinese少妇国语对白| 亚洲熟妇av一区二区三区漫画| 波多野结衣av一区二区全免费观看| 福利视频999| 91大神免费观看| av在线网站免费观看| 欧美国产日韩在线视频| 欧美国产日韩在线视频| 永久免费黄色片| 日本福利视频在线观看| 男女啪啪免费观看| 日本精品久久久久久久久久| 久久久久久人妻一区二区三区| 国产视频在线观看网站| 国产素人在线观看| 99视频在线免费播放| 免费日韩视频在线观看| 天天碰免费视频| www激情五月| 国产精品久久久久7777| 女人喷潮完整视频| 成年人在线观看视频免费| 三上悠亚av一区二区三区| 亚洲黄色av片| 欧美图片激情小说| 国产xxxxx视频| 99日在线视频| 欧美亚洲色图视频| 老司机午夜av| www.黄色网址.com| 精品一区二区中文字幕| 日韩av.com| 男女猛烈激情xx00免费视频| 亚洲精品乱码久久久久久自慰| 激情五月婷婷基地| 欧美视频在线观看网站| 亚洲欧美国产中文| 日韩一区二区高清视频| wwwwxxxx日韩| 日b视频免费观看| 一本一道久久a久久综合蜜桃| www.avtt| 91网址在线观看精品| 5月婷婷6月丁香| 性生活免费观看视频| 在线观看的毛片| 美女扒开大腿让男人桶| 国产永久免费网站| 久久久999免费视频| 男女裸体影院高潮| 日韩中文字幕a| 日韩a在线播放| 国内精品视频一区二区三区| 涩多多在线观看| 色婷婷一区二区三区av免费看| av日韩一区二区三区| 国产精品嫩草影院8vv8| 国产成人精品无码播放| 男的插女的下面视频| 肉大捧一出免费观看网站在线播放 | 性chinese极品按摩| 日本免费黄视频| 日韩a级在线观看| 亚洲五码在线观看视频| 日日干夜夜操s8| 中文字幕第100页| 亚洲精品高清无码视频| 欧美变态另类刺激| 日韩精品 欧美| 91成人在线观看喷潮教学| 亚洲精品蜜桃久久久久久| 欧美日韩午夜爽爽| 中文精品无码中文字幕无码专区| 永久免费黄色片|