摘要:判斷變量類型數(shù)據(jù)類型種操作符可能返回的值如下注意的能力有限,其對于類型返回的都是使用場景區(qū)分對象和原始類型要區(qū)分一種對象類型和另一種對象類型可以使用運算符或?qū)ο髮傩赃\算符用法左邊的運算數(shù)是一個右邊運算數(shù)是對象類的名字或者構(gòu)造函數(shù)返回或如果是
判斷變量類型
typeof操作符javaSctipt數(shù)據(jù)類型7種: Number, String, Boolean, Null, Undefined, Object, Symbol
可能返回的值如下
undefined
boolean
string
number
object
function
注意: typeof 的能力有限,其對于null, Date、RegExp類型返回的都是"object"
typeof null // "object" typeof {}; // "object" typeof []; // "object" typeof new Date(); // "object"
使用場景:區(qū)分對象和原始類型,要區(qū)分一種對象類型和另一種對象類型,可以使用: instanceof運算符或?qū)ο骳ontructor屬性
instanceof運算符用法: 左邊的運算數(shù)是一個object,右邊運算數(shù)是對象類的名字或者構(gòu)造函數(shù);返回true或false
[] instanceof Array; // true [] instanceof Object; // true [] instanceof RegExp; // false new Date instanceof Date; // true
如果object是class或者構(gòu)造函數(shù)的實例,則返回true,如果不是或者是null也返回false
instanceof運算符判斷是否為數(shù)組類型
function isArray(arr){ return arr instanceof Array; }contructor屬性
所有的對象都有一個constructor屬性,指向該對象的基本對啊性構(gòu)造函數(shù)類型的屬性
var a = new Array; a.constructor === Array // true var n = new Number(3); n.constructor === Number; // true
判斷為數(shù)組還可以這樣
function isArray(arr){ return typeof arr === "object" && arr.constructor === Array; }Object.ProtoType.toString()
每個對象都有一個toString()方法,返回"[object type]",其中type是對象的類型
當執(zhí)行該方法時,執(zhí)行以下步驟
1,獲取對象的class屬性
2,連接字符串 "[object "+結(jié)果1+"]" ;
所以可以通過toString()來獲取每個對象的類型,為了每個對象都可以通過Object.protoType.toString()來檢測,需要以Funciton.prototype.call()或Function.prototype.apply()的形式來調(diào)用,傳遞要檢查的對象作為第一個參數(shù),稱為thisArg
Object.prototype.toString.call(new Date); // "[object Date]" Object.prototype.toString.call([]); // "[object Array]" Object.prototype.toString.call(/reg/ig); // "[object RegExp]"參考
JavaScript中判斷對象類型的幾種方法總結(jié)
Aboutgithub
blog
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/90065.html
摘要:訪問屬性是通過操作符完成的,但這要求屬性名必須是一個有效的變量名小紅的屬性名不是一個有效的變量,就需要用括起來。閉包應(yīng)用封裝私有變量箭頭函數(shù)箭頭函數(shù)相當于匿名函數(shù),并且簡化了函數(shù)定義。 數(shù)據(jù)類型 NAN NaN === NaN; // false 唯一能判斷NaN的方法是通過isNaN()函數(shù): isNaN(NaN); // true 浮點數(shù)的相等比較: 1 / 3 === (...
摘要:類型轉(zhuǎn)換和表示一個空對象。如果有其他類型想轉(zhuǎn)換為或者類型,直接賦值就可以了。都能隱式的把數(shù)據(jù)類型轉(zhuǎn)為類型。。。時間時間二數(shù)字類型轉(zhuǎn)換為字符串默認是進制是一個對象類型,所以其他類型轉(zhuǎn)化為通常都是。 前言 javaScript是一門可以自由進行數(shù)據(jù)類型轉(zhuǎn)換的編程語言,類型轉(zhuǎn)換是javaScript很重要的特色(坑點很多!!!),大家想以后寫出更多嚴謹?shù)拇a(少出一些莫名其妙的Bug),還是...
摘要:如果有一方是布爾值,則轉(zhuǎn)換為,轉(zhuǎn)換為,再進行判斷。等同運算符類型不同返回類型相同如果同為數(shù)字字符串則比較值如果同為布爾值,相同則為不同為如果兩個操作數(shù)同為引用類型,且引用的為同一個對象函數(shù),數(shù)組,則相同。 本文主要記錄平時開發(fā)遇到的知識點和小技巧 相等判斷(==) 類型相同: 判斷其值是否相同 類型不同: 1. 如果數(shù)字和字符串比較, 則字符串會被隱式轉(zhuǎn)換為數(shù)字,在做判斷。 2....
摘要:引子前不久我建立的技術(shù)群里一位問了一個這樣的問題,她貼出的代碼如下所示執(zhí)行結(jié)果如下所示第一個第二個這是一個令人詫異的結(jié)果,為什么第一個彈出框顯示的是,而不是呢這種疑惑的原理我描述如下一個頁面里直接定義在標簽下的變量是全局變量即屬于對象的變量 1) 引子 前不久我建立的技術(shù)群里一位MM問了一個這樣的問題,她貼出的代碼如下所示: var a = 1; function hehe...
摘要:進階期理解中的執(zhí)行上下文和執(zhí)行棧進階期深入之執(zhí)行上下文棧和變量對象但是今天補充一個知識點某些情況下,調(diào)用堆棧中函數(shù)調(diào)用的數(shù)量超出了調(diào)用堆棧的實際大小,瀏覽器會拋出一個錯誤終止運行。 (關(guān)注福利,關(guān)注本公眾號回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實戰(zhàn)、面試指導(dǎo)) 本周正式開始前端進階的第一期,本周的主題是調(diào)用堆棧,今天是第3天。 本計劃一共28期,每期重點攻...
閱讀 3244·2023-04-25 18:54
閱讀 2761·2021-11-02 14:40
閱讀 3321·2021-09-23 11:58
閱讀 2531·2019-08-30 13:50
閱讀 1331·2019-08-29 12:46
閱讀 3218·2019-08-28 17:51
閱讀 775·2019-08-26 11:47
閱讀 991·2019-08-23 16:17