1. 程式人生 > >typeof 與 intanceof 的區別(全)

typeof 與 intanceof 的區別(全)

1、位置不同:typeof放在變數前面,沒有預判斷的型別值,instanceof放在變數之後,後面跟想要判斷的型別值。這個比較簡單,程式碼如下:

var a = 0;
var b = new Array();
console.log(typeof a); // number
console.log(b instanceof Array); // true

2、判斷的型別不同,typeof可以判斷基本型別和引用型別,而instanceof只能判斷引用型別;
3、結果不同,typeof 有
"number","boolean","string","function","object","undefined"


六種結果,且返回的值都是字串格式,以小寫開頭,即

var a = 1;
console.log(typeof typeof a); // string

結果為”function”的只有函式型別:

var a = function(){}; 
console.log(typeof a); // function

結果為“object”的有三種類型,陣列、物件、正則,程式碼如下:

var a = new Array();
var b = new Object();
var c = new RegExp();
console.log(typeof a, typeof b, typeof
c); // object object object

instanceof的結果只有truefalse,它用於判斷一個變數是不是某個物件的子類,它會沿著原型鏈__proto__向上找,如果找到匹配的物件,就返回true,否則返回false。預判斷型別一般為3種:

var a = new Array();
var b = new Object();
var c = new RegExp();
var d = function(){};
var e = new d();

console.log(a instanceof Array); // true
console.log(a instanceof
Object); // true console.log(b instanceof Object); // true console.log(c instanceof RegExp); // true console.log(c instanceof Object); // true console.log(d instanceof Function); // true console.log(d instanceof Object); // true console.log(e instanceof d); // true

最後一個行返回true是因為e是d的例項;

注意:instanceof右邊必須是一個物件;