1. 程式人生 > 其它 >JS手寫instanceof實現方式

JS手寫instanceof實現方式

技術標籤:前端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))