题解 | #instanceof#
instanceof
http://www.nowcoder.com/practice/a1169935fd6145899f953ba8fbccb585
06_instanceof
本题考点:原型链
根据题目要求,实现一个仿instanceof功能的"_instanceof"函数,该函数可以判断首参是否在第二个Fn构造函数的原型链上,核心步骤有:
- 获取首个对象参数的原型对象
- 获取Fn函数的原型对象
- 进入死循环,当两个参数的原型对象相等时返回true
- 当两个参数的原型对象不相等时获取首个对象参数原型的原型并且循环该步骤直到null时返回false
参考答案:
const _instanceof = (target, Fn) => {
let proto = target.__proto__
let prototype = Fn.prototype
while(true) {
if(proto === Fn.prototype) return true
if(proto === null) return false
proto = proto.__proto__
}
}