手写myInstanceOf方法
/**
* 自定义的instanceof检查函数。
* @param {Object} L - 左侧对象,需要检查是否是右侧构造函数的实例。
* @param {Function} R - 右侧构造函数,用来检查左侧对象是否是其实例。
* @returns {boolean} 如果L是R的实例,则返回true;否则返回false。
*/
function myinstanceof(L, R) {
// 当L不为null时,继续检查
while (L !== null) {
// 如果L的__proto__等于R的prototype,则说明L是R的实例
if (L.__proto__ === R.prototype) {
return true;
}
// 将L更新为其原型,继续向上遍历原型链
L = L.__proto__;
}
// 如果遍历完原型链仍未找到匹配的prototype,则L不是R的实例
return false;
}
// 测试代码
console.log(myinstanceof([], Array)); // true
console.log(myinstanceof([], Object)); // true
console.log(myinstanceof({}, Array)); // false