摘要:在中我們通常使用來(lái)檢測(cè)變量的類型但是在一些復(fù)雜情況下就顯得力不從心了下面我們來(lái)說(shuō)說(shuō)和使用這三個(gè)進(jìn)行類型的檢測(cè)檢測(cè)中的基本類型還是可以的對(duì)于和就比較特殊了對(duì)于函數(shù)數(shù)組對(duì)于下面的檢測(cè)就比較混亂了該函數(shù)用來(lái)查看對(duì)象的構(gòu)造函數(shù)這里需要注意的是對(duì)于和
在javascript中我們通常使用typeof()來(lái)檢測(cè)變量的類型,但是在一些復(fù)雜情況下typeof()就顯得力不從心了,下面我們來(lái)說(shuō)說(shuō)typeof,constructor和toString,使用這三個(gè)進(jìn)行類型的檢測(cè).
typeoftypeof檢測(cè)js中的基本類型還是可以的.
var num = 1; typeof(num) // number var str = "hello"; typeof(str); // string var bool = true; typeof(bool); // boolean
對(duì)于undefined和null就比較特殊了,
typeof(undefined); // undefined typeof(null); // object
對(duì)于函數(shù)、數(shù)組
function a(){}; typeof(a); // function var arr = []; typeof(arr); // object
對(duì)于下面的檢測(cè)就比較混亂了:
typeof new Boolean(true) === "object"; typeof new Number(1) ==== "object"; typeof new String("abc") === "object"; typeof new Date() === "object";constructor
該函數(shù)用來(lái)查看對(duì)象的構(gòu)造函數(shù)
var bool = true; console.log(bool.constructor == Boolean);// true var num = 1; console.log(num.constructor == Number); // true var str = "hello"; console.log(str.constructor == String); // true
這里需要注意的是:
對(duì)于 undefined 和 null ,不能夠使用 construcor檢測(cè).
使用toString檢測(cè),必須使用Object.prototype.toString(),
先來(lái)看看這個(gè)東東輸出什么鬼:
console.log(Object.prototype.toString()); // [object Object]
那么如何使用toString()來(lái)進(jìn)行檢測(cè)呢?這里使用 call()來(lái)改變this的指向,
var bool = true; console.log(Object.prototype.toString.call(bool)); // [object Boolean] var num = 1; console.log(Object.prototype.toString.call(num)); // [object Number] var str = "hello"; console.log(Object.prototype.toString.call(str)); // [object String] var arr = []; console.log(Object.prototype.toString.call(arr)); // [object Array] var a = undefined; console.log(Object.prototype.toString.call(a)); // [object Undefined] var b = null; console.log(Object.prototype.toString.call(b)); // [object Null]
可以看出 使用Object.prototype.toString.call()來(lái)檢測(cè) 是比較完美的.推薦使用.
補(bǔ)充 instanceof檢測(cè)某個(gè)實(shí)例是否在某個(gè)對(duì)象的原型鏈上 原型鏈__proto__,
var c = []; console.log(c instanceof Object); //true var d = 123; // 這些 普通類型 并不是對(duì)象 console.log(d instanceof Object); //false var str = "hello"; // 不是對(duì)象 console.log(str instanceof Object); //false var num = new Number(123); console.log(num instanceof Object);
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/78781.html
摘要:正文一基本類型檢測(cè)為什么說(shuō)是基本類型檢測(cè)對(duì)于這三種類型經(jīng)常用到的基本類型檢測(cè)是正確的。為什么說(shuō)是更好的檢測(cè)方法上面的兩種方法要么是只能檢測(cè)基本類型,要么是只能檢測(cè)引用類型,還存在不支持檢測(cè)的情況。 前言 前兩篇文章主要是一直在討論JS類型的轉(zhuǎn)換,那么怎么才能檢測(cè)JS的數(shù)據(jù)類型呢?檢測(cè)數(shù)據(jù)類型在工程中經(jīng)常用到,常見的JS類型檢測(cè)有三種方法: 1. typeof 2. instanceof...
摘要:基本類型和類型檢測(cè)類型基本類型,,,,,類型檢測(cè)在開發(fā)中難免會(huì)遇到類型檢測(cè),以下就是常用一些方法可以檢測(cè)基本類型蛋蛋君但是使用檢測(cè)的時(shí)候會(huì)返回。 JS基本類型和類型檢測(cè) 類型 基本類型:string,number,null,undefined,boolean,object 類型檢測(cè) 在開發(fā)中難免會(huì)遇到類型檢測(cè),以下就是常用一些方法 typeof: typeof可以檢測(cè)基本類型 typ...
摘要:運(yùn)算符可以用來(lái)檢測(cè)某個(gè)構(gòu)造函數(shù)的屬性是否存在于另外一個(gè)要檢測(cè)對(duì)象的原型鏈上。使用方法可以獲取到變量的準(zhǔn)確的數(shù)據(jù)類型就能解決基本包裝類型的檢測(cè)錯(cuò)誤和的檢測(cè)不安全。 本文共 1750 字,讀完只需 7 分鐘 數(shù)據(jù)類型有哪些? ECMAScript 的數(shù)據(jù)類型分為簡(jiǎn)單數(shù)據(jù)類型(也被稱為基本數(shù)據(jù)類型,原始數(shù)據(jù)類型): Undefined Null String Number Boolean ...
摘要:中檢測(cè)數(shù)據(jù)類型的四種方法前言先說(shuō)一下中的數(shù)據(jù)類型有哪幾類主要分類兩大類型,基本類型和引用類型。用法結(jié)果這樣一看,似乎能滿足的所有數(shù)據(jù)類型,那我們看下繼承之后是否能檢測(cè)出來(lái)結(jié)果小結(jié)可以看出,可用于檢測(cè)所有的數(shù)據(jù)類型。 js中檢測(cè)數(shù)據(jù)類型的四種方法 前言 先說(shuō)一下JavaScript中的數(shù)據(jù)類型有哪幾類?主要分類兩大類型,基本類型和引用類型。 showImg(https://segment...
摘要:中常常會(huì)看到這種代碼變量與的比較這種用法很有問(wèn)題用來(lái)判斷變量是否被賦予了一個(gè)合理的值比如不好的寫法執(zhí)行一些邏輯這段代碼中方法顯然是希望是一個(gè)數(shù)組因?yàn)槲覀兛吹降膿碛泻瓦@段代碼的意圖非常明顯如果參數(shù)不是一個(gè)數(shù)組則停止接下來(lái)的操作這種寫法的問(wèn)題在 js中, 常常會(huì)看到這種代碼: 變量與null的比較(這種用法很有問(wèn)題), 用來(lái)判斷變量是否被賦予了一個(gè)合理的值. 比如: const Contr...
摘要:話不多說(shuō),我們開干,加油干貨滿滿今天,我們一起學(xué)習(xí)一下中的數(shù)據(jù)類型檢測(cè)相關(guān)的知識(shí),也順便做個(gè)總結(jié)?;緮?shù)據(jù)類型又包括,還有一個(gè)新增的,我們這先不說(shuō)。 歡迎訪問(wèn)我的個(gè)人博客:http://www.xiaolongwu.cn 前言 最近工作有點(diǎn)忙,好幾天都沒(méi)更新技術(shù)博客了。 周末起床打開有道云筆記,發(fā)現(xiàn)自己的博客todolist里躺了一堆只有名字的文件。 話不多說(shuō),我們開干,加油! 干貨滿...
閱讀 1727·2021-11-11 10:58
閱讀 4217·2021-09-09 09:33
閱讀 1268·2021-08-18 10:23
閱讀 1558·2019-08-30 15:52
閱讀 1634·2019-08-30 11:06
閱讀 1878·2019-08-29 14:03
閱讀 1517·2019-08-26 14:06
閱讀 2969·2019-08-26 10:39