摘要:類型系統搬運自個人博客原址類型識別類型系統可以分為標準類型和對象類型,進一步標準類型又可以分為原始類型和引用類型,而對象類型又可以分為內置對象類型普通對象類型自定義對象類型。
類型系統
類型轉化表搬運自個人博客,原址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;//trueObject.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
摘要:基本數據類型中有種簡單數據類型也稱基本數據類型,,,和。不支持任何創建自定義類型的機制,而所有值都是上述中數據類型之一。 基本數據類型 ECMAScript中有5種簡單數據類型(也稱基本數據類型):Undefined,Null,Boolean,Number和String。還有一種復雜數據類型(引用型)Object。ECMAScript不支持任何創建自定義類型的機制,而所有值都是上述6中...
摘要:目錄基本類型和引用類型檢測數據類型的方法數據類型的轉換通用庫的初步創建與對象的深淺拷貝小結從前面三篇文章,我們已經大致了解的基本語法中的數據類型數值型字符串布爾型對象數組函數和這篇文章將深入探討這幾種數據類型在內存中的存儲方式讀取方式和拷貝 目錄 1. 基本類型和引用類型 2. 檢測數據類型的方法 3. 數據類型的轉換 4. 通用庫的初步創建與對象的深淺拷貝 5. 小結 從前面三篇文...
閱讀 3522·2021-11-24 09:39
閱讀 784·2019-08-30 14:22
閱讀 3036·2019-08-30 13:13
閱讀 2319·2019-08-29 17:06
閱讀 2923·2019-08-29 16:22
閱讀 1261·2019-08-29 10:58
閱讀 2436·2019-08-26 13:47
閱讀 1633·2019-08-26 11:39