isPrototypeOf 与 instanceof区别
时间: 2024-01-12 07:03:41 浏览: 28
`isPrototypeOf` 和 `instanceof` 都是用来判断一个对象是否属于另一个对象的原型链上的。
`isPrototypeOf` 是一个对象方法,用来判断某个对象是否是另一个对象的原型,语法为 `prototypeObj.isPrototypeOf(object)`。
`instanceof` 是一个运算符,用来判断某个对象是否是某个构造函数的实例,语法为 `object instanceof constructor`。
它们的区别在于:
- `isPrototypeOf` 用于判断两个对象之间的关系,而 `instanceof` 用于判断一个对象是否属于某个类或构造函数的实例。
- `isPrototypeOf` 的使用需要先获取原型对象,而 `instanceof` 可以直接用类或构造函数进行判断。
- `isPrototypeOf` 不能判断 null 和 undefined,而 `instanceof` 可以。
示例代码:
```javascript
function Animal() {}
function Cat() {}
Cat.prototype = Object.create(Animal.prototype);
const cat = new Cat();
console.log(Animal.prototype.isPrototypeOf(cat)); // true
console.log(Cat.prototype.isPrototypeOf(cat)); // true
console.log(cat instanceof Animal); // true
console.log(cat instanceof Cat); // true
console.log(cat instanceof Object); // true
console.log(cat instanceof Array); // false
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)