最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript數(shù)據(jù)類型檢測實現(xiàn)方法詳解

 更新時間:2022年11月03日 17:04:15   作者:歡萊  
Javascript中檢查數(shù)據(jù)類型一直是老生常談的問題,類型判斷在web開發(fā)中也有著非常廣泛的應(yīng)用,所以下面這篇文章主要給大家介紹了關(guān)于JS數(shù)據(jù)類型檢測的那些事,需要的朋友可以參考下

一、typeof

  • 優(yōu)點:能快速判斷基本數(shù)據(jù)類型,除了 Null
  • 缺點:不能判別 Object、ArrayNull ,都返回 object;判別引用類型除函數(shù)顯示 function外,其他顯示為 object
console.log(typeof 55);              // number
console.log(typeof true);            // boolean
console.log(typeof 'aa');            // string
console.log(typeof undefined);       // undefined
console.log(typeof function(){});    // function
console.log(typeof Symbol("foo"));   // symbol
console.log(typeof 553119869n);      // bigint
// 不能判別
console.log(typeof []);   // object
console.log(typeof {});   // object
console.log(typeof null); // object

二、instanceof

MDN:

instanceof 運算符 用于檢測構(gòu)造函數(shù)的 prototype 屬性是否出現(xiàn)在某個實例對象的原型鏈上。

理解:判斷在其原型鏈中能否找到該類型的原型。

語法:

object instanceof constructor

function D(){}
var o = new D();
o instanceof D;  // true
o instanceof Object; // true
  • 優(yōu)點:能區(qū)分Array、ObjectFunction,適用于判斷自定義的類實例對象
  • 缺點:不能判斷 Number,BooleanString 基本數(shù)據(jù)類型
console.log(55 instanceof Number);                // false
console.log(true instanceof Boolean);             // false 
console.log('aa' instanceof String);              // false  
console.log([] instanceof Array);                 // true
console.log(function(){} instanceof Function);    // true
console.log({} instanceof Object);                // true

String 對象和 Date 對象都屬于 Object 類型 和 一些特殊情況:

var simpleStr = "a simple string";
var objStr = new String();
var newStr = new String("String created with constructor");
var aDate = new Date();
var myNonObj = Object.create(null);
simpleStr instanceof String; // false,非對象實例,因此返回 false
objStr instanceof String;    // true
newStr instanceof String;    // true
objStr instanceof Object;    // true       
myNonObj instanceof Object; // false,一種創(chuàng)建非 Object 實例的對象的方法
aDate instanceof Date;      // true
aDate instanceof Object;    // true

三、Object.prototype.toString.call()

  • 優(yōu)點:精準判斷數(shù)據(jù)類型,所有原始數(shù)據(jù)類型都是能判斷;
  • 缺點:寫法繁瑣,最好進行封裝后使用
var toString = Object.prototype.toString;
console.log(toString.call(55));           // [object Number]
console.log(toString.call(true));         // [object Boolean]
console.log(toString.call('aa'));         // [object String]
console.log(toString.call([]));           // [object Array]
console.log(toString.call(function(){})); // [object Function]
console.log(toString.call({}));           // [object Object]
console.log(toString.call(undefined));    // [object Undefined]
console.log(toString.call(null));         // [object Null]
console.log(toString.call(Math));         // [object Math]
console.log(toString.call(Set));          // [object Function] Set 構(gòu)造函數(shù)
console.log(toString.call(Array));        // [object Function] Array 構(gòu)造函數(shù)
console.log(toString.call(Map));          // [object Function]
console.log(toString.call(Date));         // [object Function]
console.log(toString.call(new Set()));    // [object Set]
console.log(toString.call(new Array()));  // [object Array]
console.log(toString.call(new Map()));    // [object Map]
console.log(toString.call(new Date()));   // [object Date]
function D(){}
console.log(toString.call(D));            // [object Function]
console.log(toString.call(new D()));      // [object Object]

面試問題

如何判斷變量是否為數(shù)組?

let arr = []
console.log(Array.isArray(arr));    // true
arr.__proto__ === Array.prototype;  // true
arr instanceof Array;               // true
Object.prototype.toString.call(arr);// [object Array]

判斷是否是 Promise 對象

function isPromise(val) {
  return (
    typeof val.then === 'function' &&
    typeof val.catch === 'function'
  )
}
let p = new Promise((resolve, reject) => {});
console.log(isPromise(p)); // true

到此這篇關(guān)于JavaScript數(shù)據(jù)類型檢測實現(xiàn)方法詳解的文章就介紹到這了,更多相關(guān)JS數(shù)據(jù)類型檢測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js時間日期格式化封裝函數(shù)

    js時間日期格式化封裝函數(shù)

    這里給大家推薦一款自己封裝的js時間日期格式化的函數(shù),非常的簡潔實用,分享給有需要的小伙伴
    2014-12-12
  • javascript跨域請求包裝函數(shù)與用法示例

    javascript跨域請求包裝函數(shù)與用法示例

    這篇文章主要介紹了javascript跨域請求包裝函數(shù)與用法,結(jié)合實例形式分析了javascript基于ajax的跨域請求封裝函數(shù)與相關(guān)使用技巧,需要的朋友可以參考下
    2016-11-11
  • 小程序如何寫動態(tài)標簽的實現(xiàn)方法

    小程序如何寫動態(tài)標簽的實現(xiàn)方法

    這篇文章主要介紹了小程序如何寫動態(tài)標簽的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • IE6 fixed的完美解決方案

    IE6 fixed的完美解決方案

    IE7已經(jīng)支持position:fixed了,而我們的IE6呢?還繼續(xù)使用js事件?消耗資源,破壞結(jié)構(gòu),畫面閃耀。
    2011-03-03
  • JavaScript遍歷實現(xiàn)DFS算法和BFS算法

    JavaScript遍歷實現(xiàn)DFS算法和BFS算法

    DFS(Depth?first?search)稱作「深度優(yōu)先遍歷」,BFS(Breadth?first?search)稱作「廣度優(yōu)先遍歷」。本文將通過JavaScript遍歷實現(xiàn)這兩種算法,需要的可以參考一下
    2023-01-01
  • 基于JavaScript實現(xiàn)報警器提示音效果

    基于JavaScript實現(xiàn)報警器提示音效果

    這篇文章給大家分享分享一段代碼基于JavaScript實現(xiàn)報警器提示音效果,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-10-10
  • 微信小程序使用webview頁面轉(zhuǎn)pdf文件代碼示例

    微信小程序使用webview頁面轉(zhuǎn)pdf文件代碼示例

    工作需求,將webview的內(nèi)容導出到pdf輸出,下面這篇文章主要給大家介紹了關(guān)于微信小程序使用webview頁面轉(zhuǎn)pdf文件的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-09-09
  • JavaScript定時器setTimeout()和setInterval()詳解

    JavaScript定時器setTimeout()和setInterval()詳解

    這篇文章主要為大家詳細介紹了JavaScript定時器setTimeout()和setInterval()的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 在knockoutjs 上自己實現(xiàn)的flux(實例講解)

    在knockoutjs 上自己實現(xiàn)的flux(實例講解)

    下面小編就為大家分享一篇在knockoutjs 上自己實現(xiàn)的flux方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • js+html+css實現(xiàn)簡單日歷效果

    js+html+css實現(xiàn)簡單日歷效果

    這篇文章主要為大家詳細介紹了js+html+css實現(xiàn)簡單日歷效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06

最新評論

镇远县| 浦江县| 和林格尔县| 进贤县| 浦东新区| 潮安县| 新竹市| 邢台县| 东宁县| 西乌珠穆沁旗| 玛沁县| 怀来县| 出国| 浦东新区| 巴彦淖尔市| 二连浩特市| 吕梁市| 霸州市| 白城市| 扶风县| 林州市| 定襄县| 扶绥县| 合江县| 湘潭县| 星子县| 永丰县| 达日县| 抚州市| 延庆县| 湘潭县| 共和县| 临高县| 吴江市| 正定县| 湖北省| 新巴尔虎右旗| 志丹县| 铁岭县| 治多县| 新巴尔虎左旗|