摘要:判斷數(shù)據(jù)類型的幾種方法一直接返回?cái)?shù)據(jù)類型字段,但是無法判斷數(shù)組對(duì)象其中都返回二判斷某個(gè)實(shí)例是不是屬于原型構(gòu)造函數(shù)三使用判斷方法可以改變的指向,那么把方法指向不同的數(shù)據(jù)類型上面,返回不同的結(jié)果最后我們可以定義一個(gè)完美的判斷數(shù)據(jù)類型的方法
javascript 判斷數(shù)據(jù)類型的幾種方法
一、typeof 直接返回?cái)?shù)據(jù)類型字段,但是無法判斷數(shù)組、null、對(duì)象
typeof 1 "number" typeof NaN "number" typeof "1" "string" typeof true "boolean" typeof undefined "undefined" typeof null "object" typeof [] "object" typeof {} "object"
其中 null, [], {}都返回 "object"
二、instanceof 判斷某個(gè)實(shí)例是不是屬于原型
// 構(gòu)造函數(shù) function Fruit(name, color) { this.name = name; this.color = color; } var apple = new Fruit("apple", "red"); // (apple != null) apple instanceof Object // true apple instanceof Array // false
三、使用 Object.prototype.toString.call()判斷
call()方法可以改變this的指向,那么把Object.prototype.toString()方法指向不同的數(shù)據(jù)類型上面,返回不同的結(jié)果
Object.prototype.toString.call(1) "[object Number]" Object.prototype.toString.call(NaN); "[object Number]" Object.prototype.toString.call("1"); "[object String]" Object.prototype.toString.call(true) "[object Boolean]" Object.prototype.toString.call(null) "[object Null]" Object.prototype.toString.call(undefined) "[object Undefined]" Object.prototype.toString.call(function a() {}); "[object Function]" Object.prototype.toString.call([]); "[object Array]" Object.prototype.toString.call({}); "[object Object]"
最后我們可以定義一個(gè)完美的判斷數(shù)據(jù)類型的方法 _typeof()
function _typeof(obj){ var s = Object.prototype.toString.call(obj); return s.match(/[object (.*?)]/)[1].toLowerCase(); }; _typeof([12,3,343]); "array" _typeof({name: "zxc", age: 18}); "object" _typeof(1); "number" _typeof("1"); "string" _typeof(null); "null" _typeof(undefined); "undefined" _typeof(NaN); "number" _typeof(Date); "function" _typeof(new Date()); "date" _typeof(new RegExp()); "regexp"
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/101677.html
摘要:類型檢測的方法鴨子類型返回一個(gè)字符串,適合函數(shù)對(duì)象和基本類型的判斷返回一個(gè)布爾值,判斷對(duì)象類型基于原型鏈的方式原理左邊對(duì)象的原型鏈原型上是否有右邊構(gòu)造函數(shù)的對(duì)象屬性是基本類型這么多就說明不適合用于基本數(shù)據(jù)類型注意返回的是 類型檢測的方法 typeof instanceof Object.protype.toString constructor duck type:鴨子類型 show...
摘要:如果網(wǎng)頁中包含多個(gè)框架,那實(shí)際上就存在兩個(gè)以上不同的全局執(zhí)行環(huán)境,從而存在兩個(gè)以上不同版本的構(gòu)造函數(shù)。如果你從一個(gè)框架向另一個(gè)框架傳入一個(gè)數(shù)組,那么傳入的數(shù)組與在第二個(gè)框架中原生創(chuàng)建的數(shù)組分別具有各自不同的構(gòu)造函數(shù)。 1. 首先,typeof肯定是不行的 對(duì)于一些基本類型,typeof是可以判斷出數(shù)據(jù)類型,但是判斷一些引用類型時(shí)候,不能具體到具體哪一種類型 再來復(fù)習(xí)一下typeof的...
摘要:三種使用構(gòu)造函數(shù)創(chuàng)建對(duì)象的方法和的作用都是在某個(gè)特殊對(duì)象的作用域中調(diào)用函數(shù)。這種方式還支持向構(gòu)造函數(shù)傳遞參數(shù)。叫法上把函數(shù)叫做構(gòu)造函數(shù),其他無區(qū)別適用情境可以在特殊的情況下用來為對(duì)象創(chuàng)建構(gòu)造函數(shù)。 一、工廠模式 工廠模式:使用字面量和object構(gòu)造函數(shù)會(huì)有很多重復(fù)代碼,在此基礎(chǔ)上改進(jìn)showImg(https://segmentfault.com/img/bVbmKxb?w=456&...
摘要:實(shí)現(xiàn)方法方法二在服務(wù)端根據(jù)請(qǐng)求信息判斷瀏覽器是否支持谷歌瀏覽器上請(qǐng)求圖片是這樣的瀏覽器請(qǐng)求圖片是這樣的在圖片請(qǐng)求發(fā)出的時(shí)候,里有,服務(wù)端可以根據(jù)里面是否有進(jìn)行判斷。 我們都知道,WebP 是 Google 推出的 WebP 圖片格式,它是一種支持有損壓縮和無損壓縮的圖片文件格式,根據(jù)Google測試,相同的圖片,WebP 格式的圖片均能比 PNG,JPG 格式的圖片節(jié)約不少體積,但是其...
摘要:參與任何數(shù)值計(jì)算的結(jié)構(gòu)都是,而且。。面向人類的理性事物,而不是機(jī)器信號(hào)。達(dá)到無刷新效果。的工作原理總是指向一個(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中通過prototype實(shí)現(xiàn)原型繼承 2、JS對(duì)象可以通過對(duì)象冒充,實(shí)現(xiàn)多重繼承, 3...
閱讀 3464·2023-04-25 19:39
閱讀 3818·2021-11-18 13:12
閱讀 3642·2021-09-22 15:45
閱讀 2441·2021-09-22 15:32
閱讀 727·2021-09-04 16:40
閱讀 3739·2019-08-30 14:11
閱讀 1893·2019-08-30 13:46
閱讀 1574·2019-08-29 15:43