js為弱型別語言,所以型別識別對js而言尤為重要,js中常用的型別識別方法有4種:typeof、object.prototype.tostring、constructor和instanceof。
(1)typeof可以識別標準型別(null除外),不能識別具體的物件型別(function除外),舉例如下:
1 console.log(typeof("tom")); //"string"
2 console.log(typeof(12)); //
"number"
3 console.log(typeof(true)); //
"boolean"
4 console.log(typeof(undefined)); //
"undefined"
5 console.log(typeof(null)); //
"objectl" null被識別為object
6 console.log(typeof()); //
"object"
7 console.log(typeof(function(){})); //
"function"
(2)object.prototype.tostring可以識別標準型別以及內建物件型別,不能識別自定義型別,舉例如下:
先封裝乙個函式實現object.prototype.tostring功能。
1function
type(obj)
4 console.log(type(1));//
"number"
5 console.log(type("abc"));//
"string"
6 console.log(type(true));//
"boolean"
7 console.log(type(undefined));//
"undefined"
8 console.log(type(null));//
"null"
9 console.log(type({}));//
"object"
10 console.log(type(new date));//
"date"
11 console.log(type(function(){}));//
"funciton"
12 console.log(type());//
"array"
13function
point(x,y)
17 console.log(type(new point(1,2)));//
"object" 自定義型別不能識別
(3)constructor是物件原型上面的乙個屬性,它指向構造器本身,constructor可以識別標準型別(undefined/null除外),可以識別內建物件型別,可以識別自定義物件型別,舉例如下:
1//標準型別
2 console.log("tom".constructor == string);//
true
3 console.log((1).constructor == number);//
true
4 console.log(true.constructor == boolean);//
true
5 console.log({}.constructor == object);//
true6//
內建型別物件
7 console.log(.constructor == array);//
true8//
自定義物件
9function
person(name)
12 console.log(new person("tom").constructor == person);//
true
(4)instanceof可以識別內建物件型別,不能識別原始型別,可以識別自定義物件型別,舉例如下:
1//識別內建物件型別
2 console.log( instanceof array);//
true3//
不能識別原始型別
4 console.log(1 instanceof number);//
false
5 console.log("tom" instanceof string);//
false6//
能識別自定義物件型別及父子型別
7function
point(x,y)
11function
circle(x,y,r)
15 circle.prototype = new
point();
16 circle.prototype.constructor =circle;
17var c = new circle(1,1,2);
18 console.log(c instanceof circle);//
true
19 console.log(c instanceof point);//
true
C 中的型別轉換與型別識別 1
c 基礎內容,不值一提 author jacky wu 2006 4 17 引用該文章,須註明其出處 c 中的型別轉換與型別識別 c 中型別轉換有很多,從簡單的內部型別的自動轉換到複雜的自定義類的型別轉換,以及多型方式的 型別轉換 越來越複雜,讓我等小輩看的是眼花繚亂,不得已,花點時間理清思路,以後...
JS中型別的檢測
在js開發中,經常需要檢測乙個變數的型別。現在就總結一下常見的檢測變數型別的方法,以及它們的適用場景。一 typeof 要檢測乙個變數是不是基本資料型別,typeof是最佳的工具。也就是說,typeof是確定乙個變數是字串 數值 布林值還是undefined的最佳工具。但如果變數是乙個物件或者nul...
JS中的型別轉換
1 隱式型別轉換 如果相等操作的兩個變數不是同一型別,那麼相等運算子會嘗試進行一些型別轉換 比較運算子。運算元可以是任何型別,但是只有數字和字串才能真正執行比較操作。減操作符將兩個運算元都轉換為數字。加操作符,如果乙個運算元是字串,那麼另外乙個運算元也會轉換為字串。一元加會將其運算元轉換為數字。轉換...