摘要:類型檢測的方法鴨子類型返回一個(gè)字符串,適合函數(shù)對象和基本類型的判斷返回一個(gè)布爾值,判斷對象類型基于原型鏈的方式原理左邊對象的原型鏈原型上是否有右邊構(gòu)造函數(shù)的對象屬性是基本類型這么多就說明不適合用于基本數(shù)據(jù)類型注意返回的是
類型檢測的方法
typeof
instanceof
Object.protype.toString
constructor
duck type:鴨子類型
typeof返回一個(gè)字符串,適合函數(shù)對象和基本類型的判斷
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è)布爾值,判斷對象類型(基于原型鏈的方式)
原理:
左邊對象的原型鏈(_proto_原型)上是否有右邊構(gòu)造函數(shù)的prototype對象屬性
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是基本類型
這么多false就說明instanceof不適合用于基本數(shù)據(jù)類型??!
var 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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/82198.html
摘要:三種使用構(gòu)造函數(shù)創(chuàng)建對象的方法和的作用都是在某個(gè)特殊對象的作用域中調(diào)用函數(shù)。這種方式還支持向構(gòu)造函數(shù)傳遞參數(shù)。叫法上把函數(shù)叫做構(gòu)造函數(shù),其他無區(qū)別適用情境可以在特殊的情況下用來為對象創(chuàng)建構(gòu)造函數(shù)。 一、工廠模式 工廠模式:使用字面量和object構(gòu)造函數(shù)會有很多重復(fù)代碼,在此基礎(chǔ)上改進(jìn)showImg(https://segmentfault.com/img/bVbmKxb?w=456&...
摘要:開始之前,必須要知道中關(guān)于類型的定義。作為基本類型也返回,因?yàn)樵谥械亩x就是用來表示一個(gè)空對象指針。返回值類型總結(jié)一般用來檢測,無法正確檢測基本數(shù)據(jù)類型。但是注意,因?yàn)楹投际穷愋?。返回值類型總結(jié)這也是比較好的返回方式了。 開始之前,必須要知道js中關(guān)于類型的定義。js中有6種基本類型,null,undefined,boolean,string,number,symbol(es6新增的類...
摘要:參與任何數(shù)值計(jì)算的結(jié)構(gòu)都是,而且。。面向人類的理性事物,而不是機(jī)器信號。達(dá)到無刷新效果。的工作原理總是指向一個(gè)對象,具體是運(yùn)行時(shí)基于函數(shù)的執(zhí)行環(huán)境動態(tài)綁定的,而非函數(shù)被聲明時(shí)的環(huán)境。原型對象上有一個(gè)屬性,該屬性指向的就是構(gòu)造函數(shù)。 1.JS面向?qū)ο蟮睦斫?面向?qū)ο蟮娜筇攸c(diǎn):繼承、封裝、多態(tài) 1、JS中通過prototype實(shí)現(xiàn)原型繼承 2、JS對象可以通過對象冒充,實(shí)現(xiàn)多重繼承, 3...
摘要:日常工作中經(jīng)常會有判斷數(shù)據(jù)類型的需求,這里簡單介紹下我平時(shí)判斷數(shù)據(jù)類型的幾種方式。當(dāng)使用檢測基本類型時(shí),會始終返回操作符確實(shí)解決了類型判斷的問題,但還是有一些不足之處。此外,只能返回,并不能直接返回?cái)?shù)據(jù)的類型。 JavaScript中有5種基本數(shù)據(jù)類型:undefined,String,Boolean,Number,Null,以及一種復(fù)雜數(shù)據(jù)類型Object。日常工作中經(jīng)常會有判斷數(shù)據(jù)...
摘要:在他的重學(xué)前端課程中提到到現(xiàn)在為止,前端工程師已經(jīng)成為研發(fā)體系中的重要崗位之一。大部分前端工程師的知識,其實(shí)都是來自于實(shí)踐和工作中零散的學(xué)習(xí)。一基礎(chǔ)前端工程師吃飯的家伙,深度廣度一樣都不能差。 開篇 前端開發(fā)是一個(gè)非常特殊的行業(yè),它的歷史實(shí)際上不是很長,但是知識之繁雜,技術(shù)迭代速度之快是其他技術(shù)所不能比擬的。 winter在他的《重學(xué)前端》課程中提到: 到現(xiàn)在為止,前端工程師已經(jīng)成為研...
閱讀 738·2021-11-25 09:43
閱讀 1724·2021-11-18 10:02
閱讀 1106·2021-10-15 09:39
閱讀 1956·2021-10-12 10:18
閱讀 2197·2021-09-22 15:43
閱讀 832·2021-09-22 15:10
閱讀 2160·2019-08-30 15:53
閱讀 1071·2019-08-30 13:00