成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript類型識別

coolpail / 558人閱讀

摘要:類型系統(tǒng)搬運(yùn)自個人博客原址類型識別類型系統(tǒng)可以分為標(biāo)準(zhǔn)類型和對象類型,進(jìn)一步標(biāo)準(zhǔn)類型又可以分為原始類型和引用類型,而對象類型又可以分為內(nèi)置對象類型普通對象類型自定義對象類型。

類型系統(tǒng)

搬運(yùn)自個人博客,原址JavaScript類型識別
javascript 類型系統(tǒng)可以分為標(biāo)準(zhǔn)類型和對象類型,進(jìn)一步標(biāo)準(zhǔn)類型又可以分為原始類型和引用類型,而對象類型又可以分為內(nèi)置對象類型、普通對象類型、自定義對象類型。

類型轉(zhuǎn)化表
Value Boolean Number String
undefined false NaN "undefined"
null false 0 "null"
true true 1 "true"
false false 0 "false"
"" false 0 ""
"123" true 123 "123"
"1a" true NaN "1a"
0 false 0 "0"
1 true 1 "1"
Infinity true Infinity "Infinity"
NaN false NaN "NaN"
{} true NaN "[object Object]"
類型判斷

typeof

instanceof

Object.prototype.toString

constructor

typeof

可以識別標(biāo)準(zhǔn)類型(null除外)

不可識別具體的對象類型(Function除外)

例:

//1. 可以識別標(biāo)準(zhǔn)類型(`null`除外)
typeof(1);//"number"
typeof("");//"string"
typeof(undefined);//"undefined"
typeof(true);//"boolean"
typeof(null);//"object"

//2. 不可識別具體的對象類型(`Function`除外)
typeof([]);//"object"
typeof({});//"object"
typeof(function(){});//"function"
instanceof

instanceof左側(cè)為查詢變量,右側(cè)為標(biāo)識對象的類

能夠判別內(nèi)置對象類型

不能判別原始類型

能夠判別自定義類型
例:

//1. 能夠判別內(nèi)置對象類型
[] instanceof Array;//true
/d/ instanceof RegExp;//true

//2. 不能判別原始類型
1 instanceof Number;//false
"xiaohong" instanceof String;//false

//3. 能夠判別自定義類型
function Point(x, y) {
    this.x = x;
    this.y = y;
}
var c = new Point(2,3);

c instanceof Point;//true
Object.prototype.toString.call()方法

可以識別標(biāo)準(zhǔn)類型,及內(nèi)置對象類型

不能識別自定義類型
例:

//1. 可以識別標(biāo)準(zhǔn)類型,及內(nèi)置對象類型
Object.prototype.toString.call(21);//"[object Number]"
Object.prototype.toString.call([]);//"[object Array]"
Object.prototype.toString.call(/[A-Z]/);//"[object RegExp]"

//2. 不能識別自定義類型
function Point(x, y) {
    this.x = x;
    this.y = y;
}

var c = new Point(2,3);//c instanceof Point;//true
Object.prototype.toString.call(c);//"[object Object]"

為了方便使用,使用函數(shù)封裝如下:

function typeProto(obj) {
    return Object.prototype.toString.call(obj).slice(8,-1);
}

typeProto("guo");//"String"
typeProto({});//"Object"
constructor

constructor指向構(gòu)造這個對象的構(gòu)造函數(shù)本身..

可識別原始類型

可識別內(nèi)置對象類型

可識別自定義類型
例:

//1. 可識別原始類型
"guo".constructor === String;//true
(1).constructor === Number;//true
true.constructor === Boolean;//true
({}).constructor === Object;//true

//2. 可識別內(nèi)置對象類型
new Date().constructor === Date;//true
[].constructor === Array;//true

//3. 可識別自定義類型
function People(x, y) {
    this.x = x;
    this.y = y;
}
var c = new People(2,3);
c.constructor===People;//true

為了方便使用,使用函數(shù)封裝如下:

function getConstructorName(obj) {
    return obj && obj.constructor && obj.constructor.toString().match(/functions*([^(]*)/)[1];
}

getConstructorName(new Date());//"Date"
getConstructorName(null);//null
getConstructorName(12);//"Number"
類型判斷對比表

其中紅色的單元格表示該判斷方式不支持的類型。

參考:

網(wǎng)易云課堂:面向?qū)ο筌浖_發(fā)實(shí)踐之專業(yè)技能訓(xùn)練

網(wǎng)易云課堂前端微專業(yè)筆記

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/91532.html

相關(guān)文章

  • JavaScript類型系統(tǒng)詳解

    摘要:基本數(shù)據(jù)類型中有種簡單數(shù)據(jù)類型也稱基本數(shù)據(jù)類型,,,和。不支持任何創(chuàng)建自定義類型的機(jī)制,而所有值都是上述中數(shù)據(jù)類型之一。 基本數(shù)據(jù)類型 ECMAScript中有5種簡單數(shù)據(jù)類型(也稱基本數(shù)據(jù)類型):Undefined,Null,Boolean,Number和String。還有一種復(fù)雜數(shù)據(jù)類型(引用型)Object。ECMAScript不支持任何創(chuàng)建自定義類型的機(jī)制,而所有值都是上述6中...

    ruicbAndroid 評論0 收藏0
  • JavaScript的數(shù)據(jù)類型(四)

    摘要:目錄基本類型和引用類型檢測數(shù)據(jù)類型的方法數(shù)據(jù)類型的轉(zhuǎn)換通用庫的初步創(chuàng)建與對象的深淺拷貝小結(jié)從前面三篇文章,我們已經(jīng)大致了解的基本語法中的數(shù)據(jù)類型數(shù)值型字符串布爾型對象數(shù)組函數(shù)和這篇文章將深入探討這幾種數(shù)據(jù)類型在內(nèi)存中的存儲方式讀取方式和拷貝 目錄 1. 基本類型和引用類型 2. 檢測數(shù)據(jù)類型的方法 3. 數(shù)據(jù)類型的轉(zhuǎn)換 4. 通用庫的初步創(chuàng)建與對象的深淺拷貝 5. 小結(jié) 從前面三篇文...

    didikee 評論0 收藏0

發(fā)表評論

0條評論

coolpail

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<