中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js中基于數據類型檢測的方式有哪些

發布時間:2021-08-12 10:24:58 來源:億速云 閱讀:127 作者:小新 欄目:web開發

這篇文章主要為大家展示了“js中基于數據類型檢測的方式有哪些”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“js中基于數據類型檢測的方式有哪些”這篇文章吧。

1、typeof 用來檢測數據類型的運算符 

console.log(typeof 12)//Number

使用typeof檢測數據類型,首先返回的都是字符串 ,其次字符串中包含了對應的數據類型

例如:"number"、"string"、"boolean"、"undefined"、"function"、"object"

console.log(typeof typeof function(){}) //string

局限性:

typeof null -> "object"

不能具體的細分是數組還是正則,還是對象中其他的值,因為使用typeof檢測數據類型,對于對象數據類型中的值,最后返回的結果都是"object"

2、instanceof 檢測某一個實例是否屬于某個類

var obj = [12,23];
    console.log(obj instanceof Array);

局限性:

對于基本數據類型來說,字面量方式創建出來的結果和實例方式創建出來的結果是有一定的區別的。從嚴格意義上講,只有實例創建出來的結果才是標準的對象數據類型值,也是標準的Number這個類的一個實例;對于字面量方式創建出來的結果是基本的數據類型值,不是嚴謹的實例,但是由于JS的松散特點,導致了可以使用Number.prototype上的方法

1)、不能用來檢測和處理字面量方式創建出來的基本數據類型值

console.log(1 instanceof Number);//false
console.log(new Number(1) instanceof Number)//true

2)、instanceof的特性:只要在當前實例的原型鏈上,我們用其檢測的結果都為true

var ary = [];
    console.log(ary instanceof Array);//true
    console.log(ary instanceof Object);//true

    function fn(){

    }
    console.log(fn instanceof Function);//true
    console.log(fn instanceof Object);//true

3、constructor 構造函數 作用和instanceof非常的相似  constructor可以處理基本數據類型的檢測

constructor檢測Object和instanceof不一樣 一般情況下是檢測不了的

var obj = [];
    console.log(obj.constructor === Array)//true

    var num = 1;
    console.log(num.constructor === Number)//true

局限性:我們可以把類的原型進行重寫,在重寫的過程中很有可能出現把之前的constructor給覆蓋掉了,這樣檢測出來的結果就不準確了。

對于特殊的數據類型null和undefined,他們所屬的類是Null和Undefined,但是瀏覽器把這兩個類保護起來了,不允許我們在外面訪問使用

4、Object.prototype.toString.call() 最準確最常用的方式 各種類型的都可以檢測(基本和引用)

首先獲取Object原型上的toString方法,讓方法執行,并且改變方法中的this關鍵字的指向

toString的理解:

表面上看應該是轉化成字符串,但是某些toString方法不僅僅是轉換為字符串

對于Number、String、Boolean、Array、RegExp、Date、Function原型上的toString方法都是把當前的數據類型轉化為字符串的類型(他們的作用僅僅是用來轉換為字符串的)

Object.prototype.toString()并不是用來轉化為字符串的,他的作用是返回當前方法執行主體(方法中的this)所屬類的詳細信息。  

({name:"李四"}).toString() //[object object]
    Math.toString()//[object Math]
({name:"李四"}).toString() //[object object]
    Math.toString()//[object Math]

    var obj = {name:"張三"};
    console.log(obj.toString())//toString中的this是obj,返回的是obj所屬的類的信息。[object Object] 第一個object代表當前實例是對象數據類型的(這個是固定的),第二個Object代表的是obj所屬的類是Object

console.log((1).toString()) // "1" Number.prototype.toString轉化為字符串

console.log((128).toString(2/8/10)) 把數字轉化為2進制、8進制、10進制

所以上面的方法的檢測如下 

var ary = [];
    console.log(Object.prototype.toString.call(ary))//[object Array]

以上是“js中基于數據類型檢測的方式有哪些”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

邹平县| 北辰区| 城口县| 行唐县| 凌海市| 贡嘎县| 铁岭市| 青田县| 琼海市| 澄城县| 上虞市| 茶陵县| 万山特区| 宝丰县| 庄河市| 昭平县| 桂林市| 沧州市| 乾安县| 林口县| 曲阜市| 美姑县| 北碚区| 德昌县| 蕉岭县| 宁国市| 鹤岗市| 长阳| 姚安县| 化州市| 辉县市| 河西区| 夹江县| 仙游县| 昂仁县| 苍南县| 馆陶县| 泰安市| 额敏县| 太原市| 临安市|