国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript類型識別

coolpail / 557人閱讀

摘要:類型系統搬運自個人博客原址類型識別類型系統可以分為標準類型和對象類型,進一步標準類型又可以分為原始類型和引用類型,而對象類型又可以分為內置對象類型普通對象類型自定義對象類型。

類型系統

搬運自個人博客,原址JavaScript類型識別
javascript 類型系統可以分為標準類型和對象類型,進一步標準類型又可以分為原始類型和引用類型,而對象類型又可以分為內置對象類型、普通對象類型、自定義對象類型。

類型轉化表
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

可以識別標準類型(null除外)

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

例:

//1. 可以識別標準類型(`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左側為查詢變量,右側為標識對象的類

能夠判別內置對象類型

不能判別原始類型

能夠判別自定義類型
例:

//1. 能夠判別內置對象類型
[] 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()方法

可以識別標準類型,及內置對象類型

不能識別自定義類型
例:

//1. 可以識別標準類型,及內置對象類型
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]"

為了方便使用,使用函數封裝如下:

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

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

constructor指向構造這個對象的構造函數本身..

可識別原始類型

可識別內置對象類型

可識別自定義類型
例:

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

//2. 可識別內置對象類型
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

為了方便使用,使用函數封裝如下:

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

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

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

參考:

網易云課堂:面向對象軟件開發實踐之專業技能訓練

網易云課堂前端微專業筆記

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91532.html

相關文章

  • JavaScript類型系統詳解

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

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

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

    didikee 評論0 收藏0

發表評論

0條評論

coolpail

|高級講師

TA的文章

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