instanceof 的作用和核心原理、 手写实现 instanceof

1、instanceof 的作用

判断数据是否是某个对象的实例,返回一个布尔值

 

2、instanceof 的核心原理

用来检测某个实例对象的原型链上是否存在构造函数的 prototype 属性

3、手写实现 instanceof

function myInstanceof(instanceObj, constructorFun) {
  // 获取构造函数的原型对象(显示原型)
  const prototypeObj = constructorFun.prototype 

  // 获取实例对象的原型(隐式原型)
  instanceObj = instanceObj.__proto__ 
  
  // 循环进行查找原型 直到Object.prototype.__proto__  === null
  while (instanceObj) {
    if (prototypeObj === instanceObj) {
      return true
    }
    instanceObj = instanceObj.__proto__ // 重点(核心):层层向上遍历
  }
  return false
}

myInstanceof('', String) // true
myInstanceof(1, String) // false

myInstanceof(1, Number) // true
myInstanceof(1, Object) // true

function Person(name) {
 this.name = name
}
const p = new Person('sunshine')
myInstanceof(p, Person) // true

你可能感兴趣的:(每日专栏,算法,JavaScript,javascript,原型模式,开发语言)