手写 instanceof
时间: 2023-07-17 21:09:34 浏览: 83
instanceof 是一个运算符,用于判断一个对象是否是某个类的实例。手写 instanceof 的实现可以通过判断对象的原型链是否包含目标类的原型来实现。具体实现代码如下:
```
function myInstanceof(obj, targetClass) {
let proto = Object.getPrototypeOf(obj);
while(proto) {
if(proto === targetClass.prototype) {
return true;
}
proto = Object.getPrototypeOf(proto);
}
return false;
}
```
使用示例:
```
class Person {}
const person = new Person();
console.log(myInstanceof(person, Person)); // true
console.log(myInstanceof(person, Object)); // true
console.log(myInstanceof(person, Array)); // false
```
相关问题
手写instanceof
可以使用原型链来手写一个简单的 instanceof,代码如下:
```
function myInstanceOf(obj, constructor) {
let proto = Object.getPrototypeOf(obj);
while (proto) {
if (proto === constructor.prototype) {
return true;
}
proto = Object.getPrototypeOf(proto);
}
return false;
}
```
这个函数接受两个参数,第一个是要检查的对象,第二个是要检查的构造函数。函数会遍历对象的原型链,如果找到了与构造函数的原型相同的原型,就返回 true,否则返回 false。
手写instanceof函数
要手写一个类似于 JavaScript 中的 `instanceof` 函数,可以使用原型链来实现。以下是一个简单的实现示例:
```javascript
function myInstanceOf(obj, constructor) {
let prototype = Object.getPrototypeOf(obj);
while (prototype !== null) {
if (prototype === constructor.prototype) {
return true;
}
prototype = Object.getPrototypeOf(prototype);
}
return false;
}
```
使用示例:
```javascript
function Person() {}
const person = new Person();
console.log(myInstanceOf(person, Person)); // true
console.log(myInstanceOf(person, Object)); // true
console.log(myInstanceOf(person, Array)); // false
```
阅读全文