摘要:開始之前,必須要知道中關(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ì)象指針。
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。
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ì)象是否相等。
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類型。
用法和上面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
摘要:當(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...
這段時(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((+ ...
摘要:前端每周清單專注前端領(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)目、巔峰人生等欄目。歡...
摘要:類型檢測(cè)的方法鴨子類型返回一個(gè)字符串,適合函數(shù)對(duì)象和基本類型的判斷返回一個(gè)布爾值,判斷對(duì)象類型基于原型鏈的方式原理左邊對(duì)象的原型鏈原型上是否有右邊構(gòu)造函數(shù)的對(duì)象屬性是基本類型這么多就說(shuō)明不適合用于基本數(shù)據(jù)類型注意返回的是 類型檢測(cè)的方法 typeof instanceof Object.protype.toString constructor duck type:鴨子類型 show...
摘要:參與任何數(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...
閱讀 3057·2021-11-19 11:31
閱讀 3148·2021-09-02 15:15
閱讀 1001·2019-08-29 17:22
閱讀 1072·2019-08-29 16:38
閱讀 2475·2019-08-26 13:56
閱讀 844·2019-08-26 12:16
閱讀 1448·2019-08-26 11:29
閱讀 941·2019-08-26 10:12