国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js中檢測數據類型的四種方法

darryrzhong / 2405人閱讀

摘要:中檢測數據類型的四種方法前言先說一下中的數據類型有哪幾類主要分類兩大類型,基本類型和引用類型。用法結果這樣一看,似乎能滿足的所有數據類型,那我們看下繼承之后是否能檢測出來結果小結可以看出,可用于檢測所有的數據類型。

js中檢測數據類型的四種方法 前言

先說一下JavaScript中的數據類型有哪幾類?
主要分類兩大類型,基本類型和引用類型。

1.typeof

先看一下用法:

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 {});

輸出結果如下:
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);

輸出結果如下:
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);

輸出結果:
true
true
true
true
true
true

撇去null和undefined,似乎說constructor能用于檢測js的基本類型和引用類型。但當涉及到原型和繼承的時候,便出現了問題,如下:

function fun() {};

fun.prototype = new Array();

let f = new fun();

console.log(f.constructor===fun);
console.log(f.constructor===Array);

在這里,我們先是定義了一個函數fun,并將該函數的原型指向了數組,同時,聲明了一個f為fun的類型,然后利用constructor進行檢測時,結果如下:
false
true

小結

撇去null和undefined,constructor能用于檢測js的基本類型和引用類型,但當對象的原型更改之后,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({}));

結果:
[object String]
[object Number]
[object Boolean]
[object Null]
[object Undefined]
[object Array]
[object Function]
[object Object]

這樣一看,似乎能滿足js的所有數據類型,那我們看下繼承之后是否能檢測出來

function fun() {};

fun.prototype = new Array();

let f = new fun();

console.log(Object.prototype.toString.call(fun))
console.log(Object.prototype.toString.call(f))

結果:
[object Function]
[object Object]

小結

可以看出,Object.prototype.toString.call()可用于檢測js所有的數據類型。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/109748.html

相關文章

  • JS程序

    摘要:設計模式是以面向對象編程為基礎的,的面向對象編程和傳統的的面向對象編程有些差別,這讓我一開始接觸的時候感到十分痛苦,但是這只能靠自己慢慢積累慢慢思考。想繼續了解設計模式必須要先搞懂面向對象編程,否則只會讓你自己更痛苦。 JavaScript 中的構造函數 學習總結。知識只有分享才有存在的意義。 是時候替換你的 for 循環大法了~ 《小分享》JavaScript中數組的那些迭代方法~ ...

    melody_lql 評論0 收藏0
  • 數據心降低成本四種方法

    摘要:調查研究表明,當數據中心停機時間的損失平均每分鐘近,美元時,避免這種事件是節省數據中心成本的首個也是效果最為顯著的方法。在調研機構波洛蒙研究所進行的一項年調查中,數據中心停機的平均損失超過萬美元,最高的損失達到萬美元以上。調查研究表明,當數據中心停機時間的損失平均每分鐘近9,000美元時,避免這種事件是節省數據中心成本的首個也是效果最為顯著的方法。不過,以下有四種方法可以幫助組織的數據中心避...

    ybak 評論0 收藏0
  • Vue.js應用四種AJAX請求數據模式

    摘要:應用的四種請求數據模式翻譯原文出處鄙人翻譯略差,別見笑。每個都有自己的利弊,應根據要求進行判斷。二組件在使用框架時,組件負責管理自己的請求和獨立狀態。相反,將初始應用程序狀態注入頁面的內聯腳本中,以便應用程序作為全局變量在需要時可用。 Vue.js應用的四種AJAX請求數據模式 翻譯原文出處:4 AJAX Patterns For Vue.js Apps 鄙人翻譯略差,別見笑。 如果...

    iKcamp 評論0 收藏0
  • JS基礎-變量類型和計算 Part one

    摘要:變量類型值類型字符串數值布爾值變量各自存儲自己的值,互相不影響,用檢測類型引用類型對象數組函數內存共用,無限擴展屬性,檢測類型變量計算強制類型轉換字符串不為空包括空格字符串為空是否為空,都為值類型強制轉換的四種情況字符串拼接運算語句為時條件 1.變量類型 (1)值類型:字符串(string)、數值(number)、布爾值(boolean)、undefined 變量各自存儲自己的值,互...

    NoraXie 評論0 收藏0

發表評論

0條評論

darryrzhong

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<