javascript檢查對象原型instanceof

作者:烽行天下

instanceof操作符用于檢查某個對象的原型鏈是否包含某個構造函數的prototype屬性。例如:

obj instanceof Widget obj的原型鏈上有很多對象(成為隱式原型),比如:obj.__proto__, obj.__proto__.__proto__, …
如果這些對象里存在一個p === Widget.prototype,那么instanceof結果為true,否則為false。

 

instanceof是通過原型鏈來檢查類型的,所以適用于任何”object”的類型檢查。

// 比如直接原型關系
function Animal(){ }
(new Animal) instanceof Animal     // true // 原型鏈上的間接原型
function Cat(){}
Cat.prototype = new Animal
(new Cat) instanceof Animal         // true

instanceof也可以用來檢測內置兌現,比如Array, RegExp, Object, Function:

[1, 2, 3] instanceof Array // true
/abc/ instanceof RegExp // true
({}) instanceof Object // true
(function(){}) instanceof Function // true
instanceof對基本數據類型不起作用,因為基本數據類型沒有原型鏈。

3 instanceof Number // false
true instanceof Boolean // false
'abc' instanceof String // false
null instanceof XXX  // always false
undefined instanceof XXX  // always false
但你可以這樣:

new Number(3) instanceof Number // true
new Boolean(true) instanceof Boolean // true
new String('abc') instanceof String // true
但這時你已經知道數據類型了,類型檢查已經沒有意義了。

四川时时彩在线投注