typeof與instanceof的區別
阿新 • • 發佈:2019-02-09
首先我們要先複習一下,什麼是基本型別,什麼是引用型別。
基本型別:指簡單的資料段,包括5種:
Undefined、String、Number、Null、Boolean
引用型別:可能由多個值構成的物件:
Object、Array、RegExp、Function、Date、
還有三種特殊的引用型別:包裝型別:String、Number、Boolean
判斷基本型別可以用typeof()
例子:
var a = 'aa';
typeof(a); //string
var b = 1;
typeof(b); //number
var c;
typeof(c); //undefined
typeof(null); //object
var d = true;
typeof(d); //boolean
但是判斷引用型別就不行了
var f = [1,2,3]
typeof(f); //object 只能檢測為物件
所以判斷引用型別要用instanceof
var a = function(){return 'hello';}
a instanceof Function;//true
a instanceof Object; //true
//基本上都屬於Object,所以都是true
包裝型別判斷
var b = 'hello';
b instanceof String;//false
var c = new String('hello');
c instanceof String;//true
上面出現的原因是因為包裝型別的例項才是一個物件。