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

資訊專欄INFORMATION COLUMN

js類型檢測的幾種方式盤點

fantix / 647人閱讀

摘要:開始之前,必須要知道中關于類型的定義。作為基本類型也返回,因為在中的定義就是用來表示一個空對象指針。返回值類型總結一般用來檢測,無法正確檢測基本數據類型。但是注意,因為和都是類型。返回值類型總結這也是比較好的返回方式了。

開始之前,必須要知道js中關于類型的定義。js中有6種基本類型,null,undefined,boolean,string,number,symbol(es6新增的類型)。還有一種引用類型(復雜類型)是object。像是{},function函數,[]數組都是對象。

首先,先定義幾種object類型

  var obj = {};
  function fun(){};
  var arr = [];
1.typeof
    console.log(typeof null);  //object
    console.log(typeof fun);  //function
    console.log(typeof obj);  //object
    console.log(typeof arr);  //object
    console.log(typeof "abc");  //string
    console.log(typeof 23);  //number
    console.log(typeof false);  //boolean

返回值類型:string
總結:一般只用來檢測基本數據類型。function能正確返回,像是數組和對象都只會返回object。null作為基本類型也返回object,因為null在js中的定義就是用來表示一個空對象指針。

2.instanceof
    console.log("string" instanceof String);  //false
    console.log(23 instanceof Number);  //false
    console.log(false instanceof Boolean);  //false
    console.log(null instanceof Object);  //false
    console.log(obj instanceof Object);  //true
    console.log(fun instanceof Object);  //true
    console.log(fun instanceof Function);  //true
    console.log(obj instanceof Function);  //false
    console.log(arr instanceof Object);  //true
    console.log(arr instanceof Array);  //true

返回值類型:boolean
總結:一般用來檢測object,無法正確檢測基本數據類型。但是注意,因為function和array都是object類型。除了相對應的Function和Array會返回true以外,instanceof Object也會返回true。

3.constructor
    console.log(obj.constructor == Object);  //true
    console.log(arr.constructor == Object);  //false
    console.log(arr.constructor == Array);  //true
    console.log(arr.constructor === Array);  //true
    console.log(fun.constructor == Object);  //false
    console.log(fun.constructor == Function);  //true
    console.log(fun.constructor === Function);  //true
    console.log("fun".constructor == String);  //true
    console.log(false.constructor == Boolean);  //true

返回值類型:boolean
總結:constructor(構造函數)檢測,這是我覺得最好的檢測方式了。能正確判斷是那種基本類型和那種object類型。而且通過constructor和prototype(原型)在有些時候能用來判斷兩個對象是否相等。

4.Object.prototype.toString.call()
    console.log(Object.prototype.toString.call("rerqw"));  //[object String]
    console.log(Object.prototype.toString.call(16));  //[object Number]
    console.log(Object.prototype.toString.call(false));  // [object Boolean]
    console.log(Object.prototype.toString.call(null));  //[object Null]
    console.log(Object.prototype.toString.call(undefined));  //[object Undefined]
    console.log(Object.prototype.toString.call(fun));  //[object Function]
    console.log(Object.prototype.toString.call(arr));  //[object Array]
    console.log(Object.prototype.toString.call(obj));  //[object Object]

返回值類型:string
總結:這也是比較好的返回方式了。雖然返回的樣式怪怪的。但是能正確返回基本類型和各種object類型。

5.Object.prototype.toString.apply()

用法和上面Object.prototype.toString.call()一樣,就是call換成apply。返回結果也一樣。
至于為什么call和apply實現效果一樣。又是另一個更復雜的問題,改天我會寫一篇文章,詳細分析apply(),call(),bind()三種方法。會回來貼上地址的。

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

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

相關文章

  • #yyds干貨盤點# 前端基礎知識面試集錦3

    摘要:當解釋器尋找引用值時,會首先檢索其在棧中的地址,取得地址后從堆中獲得實體如何實現繼承構造繼承原型繼承實例繼承拷貝繼承原型機制或和方法去實現較簡單,建議使用構造函數與原型混合方式。它是基于的一個子集。 JavaScript介紹js的基本數據類型。Undefined、Null、Boolean、Number、Stri...

    番茄西紅柿 評論0 收藏2637
  • 盤點JavaScript里好用的原生API ??????

    這段時間翻了一番JavaScript的api,發現不少好的輪子,省去造的麻煩了。 直接進入正題 解析字符串對象 我們都知道,JavaScript對象可以序列化為JSON,JSON也可以解析成對象,但是問題是如果出現了一個既不是JSON也不是對象的東西,轉成哪一方都不方便,那么eval就可以派上用場 var obj = {a:1,b:2}; // 看起來像對象的字符串 eval((+ ...

    godlong_X 評論0 收藏0
  • 前端每周清單半年盤點之 Node.js

    摘要:前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點分為新聞熱點開發教程工程實踐深度閱讀開源項目巔峰人生等欄目。對該漏洞的綜合評級為高危。目前,相關利用方式已經在互聯網上公開,近期出現攻擊嘗試爆發的可能。 前端每周清單專注前端領域內容,以對外文資料的搜集為主,幫助開發者了解一周前端熱點;分為新聞熱點、開發教程、工程實踐、深度閱讀、開源項目、巔峰人生等欄目。歡...

    kid143 評論0 收藏0
  • javascript數據類型檢測幾種方式

    摘要:類型檢測的方法鴨子類型返回一個字符串,適合函數對象和基本類型的判斷返回一個布爾值,判斷對象類型基于原型鏈的方式原理左邊對象的原型鏈原型上是否有右邊構造函數的對象屬性是基本類型這么多就說明不適合用于基本數據類型注意返回的是 類型檢測的方法 typeof instanceof Object.protype.toString constructor duck type:鴨子類型 show...

    Baaaan 評論0 收藏0
  • JavaScript知識點總結

    摘要:參與任何數值計算的結構都是,而且。。面向人類的理性事物,而不是機器信號。達到無刷新效果。的工作原理總是指向一個對象,具體是運行時基于函數的執行環境動態綁定的,而非函數被聲明時的環境。原型對象上有一個屬性,該屬性指向的就是構造函數。 1.JS面向對象的理解 面向對象的三大特點:繼承、封裝、多態 1、JS中通過prototype實現原型繼承 2、JS對象可以通過對象冒充,實現多重繼承, 3...

    sean 評論0 收藏0

發表評論

0條評論

fantix

|高級講師

TA的文章

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