instanceof

instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

object instanceof constructor

object:某个实例对象constructor`:某个构造函数

用来检测 constructor.prototype是否存在于参数 object 的原型链上。

// 定义构造函数
function C () {}
function D () {}
var o = new C()
console.log(o instanceof C, o.__proto__ === C.prototype) // true,true C.prototype 在 o 的原型链上
console.log(o instanceof D, o.__proto__ === D.prototype) // false,false D.prototype 不在 o 的原型链上
console.log(o instanceof Object, o.__proto__.__proto__ === Object.prototype) // true true
C.prototype = {}
var o2 = new C()
console.log(o2 instanceof C) // true
console.log(o instanceof C) // false,C.prototype 指向了一个空对象,这个空对象不在 o 的原型链上.
D.prototype = new C() // 继承
var o3 = new D()
console.log(o3 instanceof D) // true
console.log(o3 instanceof C) // true 因为 C.prototype 现在在 o3 的原型链上

 

posted @ 2021-11-09 15:06  ajaXJson  阅读(31)  评论(0编辑  收藏  举报