成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js類型檢測(cè)的幾種方式盤點(diǎn)

fantix / 679人閱讀

摘要:開始之前,必須要知道中關(guān)于類型的定義。作為基本類型也返回,因?yàn)樵谥械亩x就是用來(lái)表示一個(gè)空對(duì)象指針。返回值類型總結(jié)一般用來(lái)檢測(cè),無(wú)法正確檢測(cè)基本數(shù)據(jù)類型。但是注意,因?yàn)楹投际穷愋汀7祷刂殿愋涂偨Y(jié)這也是比較好的返回方式了。

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

首先,先定義幾種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
總結(jié):一般只用來(lái)檢測(cè)基本數(shù)據(jù)類型。function能正確返回,像是數(shù)組和對(duì)象都只會(huì)返回object。null作為基本類型也返回object,因?yàn)閚ull在js中的定義就是用來(lái)表示一個(gè)空對(duì)象指針。

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
總結(jié):一般用來(lái)檢測(cè)object,無(wú)法正確檢測(cè)基本數(shù)據(jù)類型。但是注意,因?yàn)閒unction和array都是object類型。除了相對(duì)應(yīng)的Function和Array會(huì)返回true以外,instanceof Object也會(huì)返回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
總結(jié):constructor(構(gòu)造函數(shù))檢測(cè),這是我覺得最好的檢測(cè)方式了。能正確判斷是那種基本類型和那種object類型。而且通過(guò)constructor和prototype(原型)在有些時(shí)候能用來(lái)判斷兩個(gè)對(duì)象是否相等。

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
總結(jié):這也是比較好的返回方式了。雖然返回的樣式怪怪的。但是能正確返回基本類型和各種object類型。

5.Object.prototype.toString.apply()

用法和上面Object.prototype.toString.call()一樣,就是call換成apply。返回結(jié)果也一樣。
至于為什么call和apply實(shí)現(xiàn)效果一樣。又是另一個(gè)更復(fù)雜的問題,改天我會(huì)寫一篇文章,詳細(xì)分析apply(),call(),bind()三種方法。會(huì)回來(lái)貼上地址的。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/105304.html

相關(guān)文章

  • #yyds干貨盤點(diǎn)# 前端基礎(chǔ)知識(shí)面試集錦3

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

    番茄西紅柿 評(píng)論0 收藏2637
  • 盤點(diǎn)JavaScript里好用的原生API ??????

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

    godlong_X 評(píng)論0 收藏0
  • 前端每周清單半年盤點(diǎn)之 Node.js

    摘要:前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點(diǎn)分為新聞熱點(diǎn)開發(fā)教程工程實(shí)踐深度閱讀開源項(xiàng)目巔峰人生等欄目。對(duì)該漏洞的綜合評(píng)級(jí)為高危。目前,相關(guān)利用方式已經(jīng)在互聯(lián)網(wǎng)上公開,近期出現(xiàn)攻擊嘗試爆發(fā)的可能。 前端每周清單專注前端領(lǐng)域內(nèi)容,以對(duì)外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點(diǎn);分為新聞熱點(diǎn)、開發(fā)教程、工程實(shí)踐、深度閱讀、開源項(xiàng)目、巔峰人生等欄目。歡...

    kid143 評(píng)論0 收藏0
  • javascript數(shù)據(jù)類型檢測(cè)幾種方式

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

    Baaaan 評(píng)論0 收藏0
  • JavaScript知識(shí)點(diǎn)總結(jié)

    摘要:參與任何數(shù)值計(jì)算的結(jié)構(gòu)都是,而且。。面向人類的理性事物,而不是機(jī)器信號(hào)。達(dá)到無(wú)刷新效果。的工作原理總是指向一個(gè)對(duì)象,具體是運(yùn)行時(shí)基于函數(shù)的執(zhí)行環(huán)境動(dòng)態(tài)綁定的,而非函數(shù)被聲明時(shí)的環(huán)境。原型對(duì)象上有一個(gè)屬性,該屬性指向的就是構(gòu)造函數(shù)。 1.JS面向?qū)ο蟮睦斫?面向?qū)ο蟮娜筇攸c(diǎn):繼承、封裝、多態(tài) 1、JS中通過(guò)prototype實(shí)現(xiàn)原型繼承 2、JS對(duì)象可以通過(guò)對(duì)象冒充,實(shí)現(xiàn)多重繼承, 3...

    sean 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

fantix

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<