摘要:類(lèi)型檢測(cè)的方法鴨子類(lèi)型返回一個(gè)字符串,適合函數(shù)對(duì)象和基本類(lèi)型的判斷返回一個(gè)布爾值,判斷對(duì)象類(lèi)型基于原型鏈的方式原理左邊對(duì)象的原型鏈原型上是否有右邊構(gòu)造函數(shù)的對(duì)象屬性是基本類(lèi)型這么多就說(shuō)明不適合用于基本數(shù)據(jù)類(lèi)型注意返回的是
類(lèi)型檢測(cè)的方法
typeof
instanceof
Object.protype.toString
constructor
duck type:鴨子類(lèi)型
typeof返回一個(gè)字符串,適合函數(shù)對(duì)象和基本類(lèi)型的判斷
var a = 123; var b = "123"; var c = false; var d = null; var e = undefined; var f = {}; var g = function(){}; var h = []; var i = NaN; console.log(typeof a); console.log(typeof b); console.log(typeof c); console.log(typeof d); console.log(typeof e); console.log(typeof f); console.log(typeof g); console.log(typeof h); console.log(typeof i);instanceof
返回一個(gè)布爾值,判斷對(duì)象類(lèi)型(基于原型鏈的方式)
原理:
左邊對(duì)象的原型鏈(_proto_原型)上是否有右邊構(gòu)造函數(shù)的prototype對(duì)象屬性
var a = 123; var b = "123"; var c = false; var d = null; var e = undefined; var f = {}; var g = function(){}; var h = []; var i = NaN; console.log(a instanceof Number); console.log(b instanceof String); console.log(c instanceof Boolean); console.log(d instanceof Object); console.log(e instanceof Object); console.log(f instanceof Object); console.log(g instanceof Function); console.log(h instanceof Array); console.log(i instanceof Number);//NaN是基本類(lèi)型
這么多false就說(shuō)明instanceof不適合用于基本數(shù)據(jù)類(lèi)型?。?br>
Object.prototype.toStringvar oP = Object.prototype, toString = oP.toString; console.log(toString.call(123));//[object Number] console.log(toString.call("123"));//[object String] console.log(toString.call(false));//[object Boolean] console.log(toString.call(undefined));//[object Undefined] console.log(toString.call(null));//[object Null] console.log(toString.call({a: "123"}));//[object Object] console.log(toString.call(/123/));//[object RegExp] console.log(toString.call([123]));//[object Array] console.log(toString,call(Date));//[object Function]
注意:IE6/7/8 Object.prototype.toString.call(null/undefined)返回的是[object Object]
constructorvar a = 123; var b = "123"; var c = false; var d = null; var e = undefined; var f = {}; var g = function(){}; var h = []; var i = NaN; console.log(a.constructor == Number); console.log(b.constructor == String); console.log(c.constructor == Boolean); // console.log(d.constructor == Object); // console.log(e.constructor == Object); console.log(f.constructor == Object); console.log(g.constructor == Function); console.log(h.constructor == Array); console.log(i.constructor == Number);
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82198.html
摘要:三種使用構(gòu)造函數(shù)創(chuàng)建對(duì)象的方法和的作用都是在某個(gè)特殊對(duì)象的作用域中調(diào)用函數(shù)。這種方式還支持向構(gòu)造函數(shù)傳遞參數(shù)。叫法上把函數(shù)叫做構(gòu)造函數(shù),其他無(wú)區(qū)別適用情境可以在特殊的情況下用來(lái)為對(duì)象創(chuàng)建構(gòu)造函數(shù)。 一、工廠模式 工廠模式:使用字面量和object構(gòu)造函數(shù)會(huì)有很多重復(fù)代碼,在此基礎(chǔ)上改進(jìn)showImg(https://segmentfault.com/img/bVbmKxb?w=456&...
摘要:開(kāi)始之前,必須要知道中關(guān)于類(lèi)型的定義。作為基本類(lèi)型也返回,因?yàn)樵谥械亩x就是用來(lái)表示一個(gè)空對(duì)象指針。返回值類(lèi)型總結(jié)一般用來(lái)檢測(cè),無(wú)法正確檢測(cè)基本數(shù)據(jù)類(lèi)型。但是注意,因?yàn)楹投际穷?lèi)型。返回值類(lèi)型總結(jié)這也是比較好的返回方式了。 開(kāi)始之前,必須要知道js中關(guān)于類(lèi)型的定義。js中有6種基本類(lèi)型,null,undefined,boolean,string,number,symbol(es6新增的類(lèi)...
摘要:參與任何數(shù)值計(jì)算的結(jié)構(gòu)都是,而且。。面向人類(lèi)的理性事物,而不是機(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...
摘要:日常工作中經(jīng)常會(huì)有判斷數(shù)據(jù)類(lèi)型的需求,這里簡(jiǎn)單介紹下我平時(shí)判斷數(shù)據(jù)類(lèi)型的幾種方式。當(dāng)使用檢測(cè)基本類(lèi)型時(shí),會(huì)始終返回操作符確實(shí)解決了類(lèi)型判斷的問(wèn)題,但還是有一些不足之處。此外,只能返回,并不能直接返回?cái)?shù)據(jù)的類(lèi)型。 JavaScript中有5種基本數(shù)據(jù)類(lèi)型:undefined,String,Boolean,Number,Null,以及一種復(fù)雜數(shù)據(jù)類(lèi)型Object。日常工作中經(jīng)常會(huì)有判斷數(shù)據(jù)...
摘要:在他的重學(xué)前端課程中提到到現(xiàn)在為止,前端工程師已經(jīng)成為研發(fā)體系中的重要崗位之一。大部分前端工程師的知識(shí),其實(shí)都是來(lái)自于實(shí)踐和工作中零散的學(xué)習(xí)。一基礎(chǔ)前端工程師吃飯的家伙,深度廣度一樣都不能差。 開(kāi)篇 前端開(kāi)發(fā)是一個(gè)非常特殊的行業(yè),它的歷史實(shí)際上不是很長(zhǎng),但是知識(shí)之繁雜,技術(shù)迭代速度之快是其他技術(shù)所不能比擬的。 winter在他的《重學(xué)前端》課程中提到: 到現(xiàn)在為止,前端工程師已經(jīng)成為研...
閱讀 654·2021-11-25 09:43
閱讀 1671·2021-11-18 10:02
閱讀 1045·2021-10-15 09:39
閱讀 1895·2021-10-12 10:18
閱讀 2126·2021-09-22 15:43
閱讀 779·2021-09-22 15:10
閱讀 2091·2019-08-30 15:53
閱讀 993·2019-08-30 13:00