1. 程式人生 > >typeof與instanceof的區別

typeof與instanceof的區別

首先我們要先複習一下,什麼是基本型別,什麼是引用型別。
基本型別:指簡單的資料段,包括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

上面出現的原因是因為包裝型別的例項才是一個物件。