JS手寫instanceof實現方式
阿新 • • 發佈:2020-12-10
技術標籤:前端JSinstanceof手寫
// 使用方式
function Car(color) {
this.color = color
this.sayColor = function () {
console.log(this.color)
}
}
// const cc = new Car('red')
// console.log(cc instanceof Car)
/**
* 重點是分為基本資料型別和引用資料型別判斷
* 引用資料型別中,需要判斷物件(child)的原型鏈是否相等
* @param child 例項化物件
* @param parentFn 建構函式(類)
* @returns {boolean} true/false
*/
function myInstanceof(child, parentFn) {
const baseType = ['string', 'number', 'undefined', 'boolean', 'symbol']
if (baseType.includes(typeof child)) return true
let childProto = child.__proto__
const parentPrototype = parentFn.prototype
while (true) {
if (!childProto) return false
if (childProto === parentPrototype) return true
childProto = childProto.__proto__
}
}
const cc = new Car('red')
console.log(myInstanceof(cc, Car))