摘要:新增了第七種類型的值數(shù)值字符串布爾值對象數(shù)據(jù)類型判斷有三種方法,可以判斷一個值的類型運算符運算符方法運算符運算符可以返回一個值的數(shù)據(jù)類型。運算符運算符返回一個布爾值,表示對象是否為某個構(gòu)造函數(shù)的實例。
1.數(shù)據(jù)類型
JavaScript一共有六種數(shù)據(jù)類型。(ES6新增了第七種Symbol類型的值)
數(shù)值(Number)
字符串(String)
布爾值(boolean)
undefined
null
對象(object)
2.數(shù)據(jù)類型判斷JavaScript有三種方法,可以判斷一個值的類型
typeof運算符
instanceof運算符
Object.prototype.toString()方法
typeof運算符typeof運算符可以返回一個值的數(shù)據(jù)類型。
數(shù)值、字符串、布爾值分別返回number、string、boolean。
typeof 123 //"number" typeof "hello" //"string" typeof true //"boolean"
函數(shù)返回function。
function f(){} typeof f //"function"
undefined返回undefined。
typeof undefined // "undefined"
對象返回object。
typeof {} // "object" typeof [] // "object"
null返回object`。
typeof null // "object"instanceof運算符
instanceof運算符返回一個布爾值,表示對象是否為某個構(gòu)造函數(shù)的實例。
由于instanceof檢查整個原型鏈,因此同一個實例對象,可能會對多個構(gòu)造函數(shù)都返回true。
instanceof運算符的一個用處,是判斷值的類型。
var x = [] var f={} x instanceof Array //true f instanceof Object //true
instanceof運算符只能用于對象,不適用原始類型的值。
利用instanceof運算符,還可以解決,調(diào)用構(gòu)造函數(shù)時,忘了加new命令的問題。
function Fn (f1, f2) { if (this instanceof Fn) { this._foo = f1; this._bar = b2; } else { return new Fn(f1, f2); } }Object.prototype.toString()
toString方法的作用是返回一個對象的字符串形式,默認情況下返回類型字符串。
var o1 = new Object(); o1.toString() //"[object Object]"
toString() 的應(yīng)用:判斷數(shù)據(jù)類型
Object.prototype.toString方法返回對象的類型字符串,因此可以用來判斷一個值的類型。
var obj = {}; obj.toString() // "[object Object]"
上面代碼調(diào)用空對象的toString方法,結(jié)果返回一個字符串object Object,其中第二個Object表示該值的構(gòu)造函數(shù)。這是一個十分有用的判斷數(shù)據(jù)類型的方法。
由于實例對象可能會自定義toString方法,覆蓋掉Object.prototype.toString方法,所以為了得到類型字符串,最好直接使用Object.prototype.toString方法。通過函數(shù)的call方法,可以在任意值上調(diào)用這個方法,判斷這個值的類型。
Object.prototype.toString.call(value)
上面代碼表示對value這個值調(diào)用Object.prototype.toString方法。
不同數(shù)據(jù)類型的Object.prototype.toString方法返回值如下。
數(shù)值:返回[object Number]。
Object.prototype.toString.call(12) //"[object Number]"
字符串:返回[object String]。
Object.prototype.toString.call("ab") //"[object String]"
布爾值:返回[object Boolean]。
Object.prototype.toString.call(true) //"[object Boolean]"
undefined:返回[object Undefined]。
Object.prototype.toString.call(undefined) //"[object Undefined]"
null:返回[object Null]。
Object.prototype.toString.call(null) //"[object Null]"
數(shù)組:返回[object Array]。
Object.prototype.toString.call([]) //"[object Array]"
函數(shù):返回[object Function]。
var f = function (){} Object.prototype.toString.call(f) //"[object Function]"
利用這個特性,可以寫出一個比typeof運算符更準(zhǔn)確的類型判斷函數(shù)。
var type = function (o){ var s = Object.prototype.toString.call(o); return s.match(/[object (.*?)]/)[1].toLowerCase(); }; type({}); // "object" type([]); // "array" type(3); // "number" type(null); // "null" type(); // "undefined" type(/abcd/); // "regex" type(new Date()); // "date"
未完待續(xù)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/96062.html
摘要:精致從細節(jié)做起。標(biāo)準(zhǔn)會在每年的月發(fā)布一次,作為當(dāng)年的正式版本,便是年發(fā)布的正式版本。支持情況各大瀏覽器對的支持情況瀏覽器支持情況對的支持情況支持情況。在瀏覽器中基于實現(xiàn)的已經(jīng)成為的重要組成部分。 精致從細節(jié)做起。前端的工作也有一段時間了,大大小小的前端框架都有接觸過,越是深入學(xué)習(xí)越是感覺之前的學(xué)習(xí)過于粗糙,基礎(chǔ)不夠扎實,于是準(zhǔn)備近期把JavaScript的基礎(chǔ)知識點梳理一下,查缺補漏,...
摘要:中文指南作者簡介是推出的一個天挑戰(zhàn)。頁面基礎(chǔ)布局標(biāo)簽定義鍵盤文本說到技術(shù)概念上的特殊樣式時,就要提到標(biāo)簽。主要代碼主要屬性有以下幾個中有一個樣式為,在本案例中,就是,是以中的為參照物,就是。 Day01 - JavaScript Drum Kit 中文指南 作者:?liyuechun 簡介:JavaScript30 是 Wes Bos 推出的一個 30 天挑戰(zhàn)。項目免費提供了 30 ...
摘要:系列題集系列題集系列題集系列題集系列題集系列題集系列題集隨手記幾個題目先,權(quán)當(dāng)草稿,如果有朋友幫忙分析下原因,不勝感激,哈哈以前的文章地址是這樣的格式,現(xiàn)在變了 從畢業(yè)開始切圖接觸前端,慢慢轉(zhuǎn)向javascript開發(fā)...但是,感覺自己的javascript難當(dāng)大任,基礎(chǔ)薄弱。網(wǎng)上面試題集很多,設(shè)計HTML/CSS/JS,但其中的問題,如果不是自己親歷,沒有被難住,是不會有太深印象的...
摘要:加入我們,一起挑戰(zhàn)吧掃碼申請加入全棧部落 JavaScript 30 - 一起做一次了不起的挑戰(zhàn) (Node+Vue+微信公眾號開發(fā))企業(yè)級產(chǎn)品全棧開發(fā)速成周末班首期班(10.28號正式開班,歡迎搶座) 在Github上看到了wesbos的一個Javascript30天挑戰(zhàn)的repo,旨在使用純JS來進行練習(xí),不允許使用任何其他的庫和框架,該挑戰(zhàn)共30天,我會在這里復(fù)現(xiàn)這30天遇到的挑...
摘要:對象數(shù)組初始化表達式,闖關(guān)記之上文檔對象模型是針對和文檔的一個。闖關(guān)記之?dāng)?shù)組數(shù)組是值的有序集合。數(shù)組是動態(tài)的,根闖關(guān)記之語法的語法大量借鑒了及其他類語言如和的語法。 《JavaScript 闖關(guān)記》之 DOM(下) Element 類型 除了 Document 類型之外,Element 類型就要算是 Web 編程中最常用的類型了。Element 類型用于表現(xiàn) XML 或 HTML 元素...
閱讀 909·2021-09-09 09:32
閱讀 2849·2021-09-02 10:20
閱讀 2685·2021-07-23 11:24
閱讀 824·2019-08-30 15:54
閱讀 3631·2019-08-30 15:54
閱讀 1346·2019-08-30 11:02
閱讀 2844·2019-08-26 17:40
閱讀 1122·2019-08-26 13:55