摘要:數(shù)據(jù)類型七種內(nèi)置類型空值未定義布爾值數(shù)字字符串對(duì)象符號(hào)除對(duì)象之外,其他統(tǒng)稱為基本類型類型檢測(cè)運(yùn)算符后面跟操作數(shù),或者,返回一個(gè)類型的字符串值。運(yùn)算符用于測(cè)試構(gòu)造函數(shù)的屬性是否出現(xiàn)在對(duì)象的原型鏈中的任何位置。
數(shù)據(jù)類型
JavaScript七種內(nèi)置類型:
空值(null)
未定義(undefined)
布爾值(boolean)
數(shù)字(number)
字符串(string)
對(duì)象(object)
符號(hào)(symbol)
除對(duì)象之外,其他統(tǒng)稱為基本類型
類型檢測(cè) typeoftypeof運(yùn)算符后面跟操作數(shù),typeof operand 或者 typeof (operand),返回一個(gè)類型的字符串值。
示例:typeof undefined === "undefined" // true typeof true === "boolean" // true typeof 1 === "number" // true typeof "test" === "string" // true typeof {} === "object" // true typeof Symbol() === "symbol" // true特殊示例:
typeof null === "object" typeof function () {} === "function" typeof [1] === "object"
typeof 對(duì)null的處理有問(wèn)題,正確的結(jié)果應(yīng)該是"null",但是實(shí)際返回的是"object",這個(gè)bug由來(lái)已久,也許以后也不會(huì)修復(fù)。
typeof function() {}返回的是一個(gè)"function",似乎function也是JavaScript的一個(gè)內(nèi)置對(duì)象,實(shí)際上函數(shù)是一個(gè)可調(diào)用對(duì)象,它有一個(gè)內(nèi)部屬性[[Call]],該屬性使其可以被調(diào)用。
typeof [1]返回"object",說(shuō)明數(shù)組也是object類型,實(shí)際上它是object的一個(gè)子類型,和普通對(duì)象通過(guò)字符串鍵索引不同,數(shù)組通過(guò)數(shù)字按順進(jìn)行索引。
typeof是檢測(cè)基本數(shù)據(jù)類型的最佳工具,但是檢測(cè)引用類型的值時(shí)作用不大,都會(huì)返回"object",這時(shí)候就需要instance操作符了。instance運(yùn)算符用于測(cè)試構(gòu)造函數(shù)的protytpe屬性是否出現(xiàn)在對(duì)象的原型鏈中的任何位置。
用法:object instanceof constructor,object: 要檢測(cè)的對(duì)象,constructor某個(gè)構(gòu)造函數(shù)
function A() {} function B() {} function C() {} A.prototype = new C() const a = new A() console.log(a instanceof A) // a是A類的實(shí)例 true console.log(a instanceof C) // A繼承C true console.log(a instanceof B) // a不是A類的實(shí)例 false console.log(a instanceof Object) // Object實(shí)所有引用類型的父類 true console.log(A.prototype instanceof Object) // true A.prototype = {} a1 = new A() console.log(a1 instanceof A) // true console.log(a instanceof A) // false const date = new Date() console.log(date instanceof Date) // true原理
function instance_of(L, R) {//L 表示左表達(dá)式,R 表示右表達(dá)式 var O = R.prototype;// 取 R 的顯示原型 L = L.__proto__;// 取 L 的隱式原型 while (true) { if (L === null) return false; if (O === L)// 這里重點(diǎn):當(dāng) O 嚴(yán)格等于 L 時(shí),返回 true return true; L = L.__proto__; } }
想要對(duì)instanceof運(yùn)算符有更加深入的了解車票
toStringtoString()方法返回一個(gè)表示該對(duì)象的字符串,每個(gè)對(duì)象都有一個(gè)toString()方法,當(dāng)該對(duì)象被表示為一個(gè)文本值時(shí),或者一個(gè)對(duì)象以預(yù)期的字符串方式引用時(shí)自動(dòng)調(diào)用。默認(rèn)情況下,toString()方法被每個(gè)Object對(duì)象繼承。如果此方法在自定義對(duì)象中未被覆蓋,toString()返回"[object type]",其中type是對(duì)象的類型
const toString = Object.prototype.toString console.log(toString.call(null)) // [object Null] console.log(toString.call(undefined)) // [object Undefined] console.log(toString.call(new String)) // [object String] console.log(toString.call(Function)) // [object Function] console.log(toString.call(new Date)) // [object Date] console.log(toString.call("new Date")) // [object String] console.log(toString.call(["a"])) // [object Array]
從示例可以看出,Object.prototype.toString.call()可以準(zhǔn)確表示數(shù)值的類型
總結(jié)typeof運(yùn)算符適合檢測(cè)基本數(shù)據(jù)類型,且返回類型的字符串
instanceof運(yùn)算符適合檢測(cè)引用類型值
toString()返回對(duì)象的類型,可以準(zhǔn)確判斷數(shù)值的類型
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/104902.html
摘要:重新認(rèn)識(shí)類型數(shù)據(jù)類型重學(xué)前端系列筆記前言最新在看大神的專欄重學(xué)前端,感慨頗多,收益也頗多。實(shí)際上是能夠表示的最小精度。也可以是對(duì)象類型這個(gè)類型是新增的一個(gè)類型。主要用于解釋字符集等。 title: 1. 重新認(rèn)識(shí) JavaScript 類型date: 2019-03-27 11:12:47 +0800tags: [JavaScript數(shù)據(jù)類型]categories: 重學(xué)前端系列筆記...
摘要:首先一上來(lái)就分享了兩個(gè)學(xué)習(xí)方法建立知識(shí)架構(gòu)追本溯源。列一份前端知識(shí)架構(gòu)圖在這章節(jié)中,分享了本專欄要學(xué)習(xí)的知識(shí)架構(gòu)瀏覽器的實(shí)現(xiàn)原理和前端工程實(shí)踐四個(gè)模塊。最后一個(gè)是前端工程實(shí)踐,從性能工具鏈持續(xù)集成搭建系統(tǒng)架構(gòu)與基礎(chǔ)庫(kù)五個(gè)方面講起。 明確你的前端學(xué)習(xí)路線 自己特別喜歡屯課,看著自己買的課,有種滿足感,仿佛知識(shí)都是我的了,翻看極客時(shí)間買的課,決定這段時(shí)間把重學(xué)前端專欄學(xué)習(xí)一遍。 從周六到今...
摘要:隱式強(qiáng)制類型轉(zhuǎn)換指的是那些隱藏的強(qiáng)制類型轉(zhuǎn)換,副作用也不是很明顯,事實(shí)上,只要自己覺(jué)得不夠明顯的強(qiáng)制類型轉(zhuǎn)換都可以算作隱式強(qiáng)制類型轉(zhuǎn)換,接下來(lái),此文將會(huì)介紹幾種常見(jiàn)的隱式類型轉(zhuǎn)換。 隱式強(qiáng)制類型轉(zhuǎn)換指的是那些隱藏的強(qiáng)制類型轉(zhuǎn)換,副作用也不是很明顯,事實(shí)上,只要自己覺(jué)得不夠明顯的強(qiáng)制類型轉(zhuǎn)換都可以算作隱式強(qiáng)制類型轉(zhuǎn)換,接下來(lái),此文將會(huì)介紹幾種常見(jiàn)的隱式類型轉(zhuǎn)換。 加法操作符 轉(zhuǎn)換規(guī)則: ...
摘要:的碼點(diǎn)被稱為基本字符區(qū)域。關(guān)于的介紹,我準(zhǔn)備用文檔阮一峰來(lái)做一些介紹,具體的可以參考文檔引入的原因的對(duì)象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數(shù)前不能使用命令,否則會(huì)報(bào)錯(cuò)。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完...
摘要:的碼點(diǎn)被稱為基本字符區(qū)域。關(guān)于的介紹,我準(zhǔn)備用文檔阮一峰來(lái)做一些介紹,具體的可以參考文檔引入的原因的對(duì)象屬性名都是字符串,這容易造成屬性名的沖突。其他的一些屬性可以去看文檔阮一峰注意函數(shù)前不能使用命令,否則會(huì)報(bào)錯(cuò)。 筆記說(shuō)明 重學(xué)前端是程劭非(winter)【前手機(jī)淘寶前端負(fù)責(zé)人】在極客時(shí)間開(kāi)的一個(gè)專欄,每天10分鐘,重構(gòu)你的前端知識(shí)體系,筆者主要整理學(xué)習(xí)過(guò)程的一些要點(diǎn)筆記以及感悟,完...
閱讀 2781·2021-11-19 11:30
閱讀 3066·2021-11-15 11:39
閱讀 1787·2021-08-03 14:03
閱讀 1996·2019-08-30 14:18
閱讀 2052·2019-08-30 11:16
閱讀 2163·2019-08-29 17:23
閱讀 2607·2019-08-28 18:06
閱讀 2540·2019-08-26 12:22