摘要:中檢測數(shù)據(jù)類型的四種方法前言先說一下中的數(shù)據(jù)類型有哪幾類主要分類兩大類型,基本類型和引用類型。用法結(jié)果這樣一看,似乎能滿足的所有數(shù)據(jù)類型,那我們看下繼承之后是否能檢測出來結(jié)果小結(jié)可以看出,可用于檢測所有的數(shù)據(jù)類型。
js中檢測數(shù)據(jù)類型的四種方法 前言
先說一下JavaScript中的數(shù)據(jù)類型有哪幾類?
主要分類兩大類型,基本類型和引用類型。
先看一下用法:
console.log(typeof ""); console.log(typeof 1); console.log(typeof true); console.log(typeof null); console.log(typeof undefined); console.log(typeof []); console.log(typeof function(){}); console.log(typeof {});
輸出結(jié)果如下:
string
number
boolean
object
undefined
object
function
object
typeof可以用于檢測基本類型,但碰到引用類型均返回為object。
2.instanceof看一下用法:
console.log("1" instanceof String); console.log(1 instanceof Number); console.log(true instanceof Boolean); console.log([] instanceof Array); console.log(function(){} instanceof Function); console.log({} instanceof Object);
輸出結(jié)果如下:
false
false
false
true
true
true
不難看出,instanceof可以用于引用類型的檢測,但對于基本類型是不生效的,另外,不能用于檢測null和undefined。
3.constructor先看一下用法:
console.log(("1").constructor === String); console.log((1).constructor === Number); console.log((true).constructor === Boolean); console.log(([]).constructor === Array); console.log((function() {}).constructor === Function); console.log(({}).constructor === Object);
輸出結(jié)果:
true
true
true
true
true
true
撇去null和undefined,似乎說constructor能用于檢測js的基本類型和引用類型。但當(dāng)涉及到原型和繼承的時候,便出現(xiàn)了問題,如下:
function fun() {}; fun.prototype = new Array(); let f = new fun(); console.log(f.constructor===fun); console.log(f.constructor===Array);
在這里,我們先是定義了一個函數(shù)fun,并將該函數(shù)的原型指向了數(shù)組,同時,聲明了一個f為fun的類型,然后利用constructor進行檢測時,結(jié)果如下:
false
true
撇去null和undefined,constructor能用于檢測js的基本類型和引用類型,但當(dāng)對象的原型更改之后,constructor便失效了。
4.Object.prototype.toString.call()用法:
var test = Object.prototype.toString; console.log(test.call("str")); console.log(test.call(1)); console.log(test.call(true)); console.log(test.call(null)); console.log(test.call(undefined)); console.log(test.call([])); console.log(test.call(function() {})); console.log(test.call({}));
結(jié)果:
[object String]
[object Number]
[object Boolean]
[object Null]
[object Undefined]
[object Array]
[object Function]
[object Object]
這樣一看,似乎能滿足js的所有數(shù)據(jù)類型,那我們看下繼承之后是否能檢測出來
function fun() {}; fun.prototype = new Array(); let f = new fun(); console.log(Object.prototype.toString.call(fun)) console.log(Object.prototype.toString.call(f))
結(jié)果:
[object Function]
[object Object]
可以看出,Object.prototype.toString.call()可用于檢測js所有的數(shù)據(jù)類型。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/109748.html
摘要:設(shè)計模式是以面向?qū)ο缶幊虨榛A(chǔ)的,的面向?qū)ο缶幊毯蛡鹘y(tǒng)的的面向?qū)ο缶幊逃行┎顒e,這讓我一開始接觸的時候感到十分痛苦,但是這只能靠自己慢慢積累慢慢思考。想繼續(xù)了解設(shè)計模式必須要先搞懂面向?qū)ο缶幊?,否則只會讓你自己更痛苦。 JavaScript 中的構(gòu)造函數(shù) 學(xué)習(xí)總結(jié)。知識只有分享才有存在的意義。 是時候替換你的 for 循環(huán)大法了~ 《小分享》JavaScript中數(shù)組的那些迭代方法~ ...
摘要:調(diào)查研究表明,當(dāng)數(shù)據(jù)中心停機時間的損失平均每分鐘近,美元時,避免這種事件是節(jié)省數(shù)據(jù)中心成本的首個也是效果最為顯著的方法。在調(diào)研機構(gòu)波洛蒙研究所進行的一項年調(diào)查中,數(shù)據(jù)中心停機的平均損失超過萬美元,最高的損失達到萬美元以上。調(diào)查研究表明,當(dāng)數(shù)據(jù)中心停機時間的損失平均每分鐘近9,000美元時,避免這種事件是節(jié)省數(shù)據(jù)中心成本的首個也是效果最為顯著的方法。不過,以下有四種方法可以幫助組織的數(shù)據(jù)中心避...
摘要:應(yīng)用的四種請求數(shù)據(jù)模式翻譯原文出處鄙人翻譯略差,別見笑。每個都有自己的利弊,應(yīng)根據(jù)要求進行判斷。二組件在使用框架時,組件負責(zé)管理自己的請求和獨立狀態(tài)。相反,將初始應(yīng)用程序狀態(tài)注入頁面的內(nèi)聯(lián)腳本中,以便應(yīng)用程序作為全局變量在需要時可用。 Vue.js應(yīng)用的四種AJAX請求數(shù)據(jù)模式 翻譯原文出處:4 AJAX Patterns For Vue.js Apps 鄙人翻譯略差,別見笑。 如果...
摘要:變量類型值類型字符串?dāng)?shù)值布爾值變量各自存儲自己的值,互相不影響,用檢測類型引用類型對象數(shù)組函數(shù)內(nèi)存共用,無限擴展屬性,檢測類型變量計算強制類型轉(zhuǎn)換字符串不為空包括空格字符串為空是否為空,都為值類型強制轉(zhuǎn)換的四種情況字符串拼接運算語句為時條件 1.變量類型 (1)值類型:字符串(string)、數(shù)值(number)、布爾值(boolean)、undefined 變量各自存儲自己的值,互...
閱讀 3686·2021-10-11 10:58
閱讀 2268·2021-10-08 10:05
閱讀 2059·2021-09-27 13:34
閱讀 3600·2019-08-30 15:53
閱讀 2747·2019-08-30 14:02
閱讀 3588·2019-08-29 16:55
閱讀 642·2019-08-29 15:41
閱讀 1092·2019-08-29 15:23