Object.prototype.isPrototypeOf与instanceof的区别

本文探讨了JavaScript中两种用于检查对象原型链的方法:Object.prototype.isPrototypeOf()和instanceof。它们都能判断一个对象是否在另一个对象的原型链上,但使用方式略有不同。isPrototypeOf()需要明确指定原型对象,而instanceof会自动检测函数对象的原型。两者在原型链检测上作用相似,都在创建对象实例时发挥关键作用。
摘要由CSDN通过智能技术生成

相同点

Object.prototype.isPrototypeOf 与 instanceof 都是判断目标对象是否在另一个对象的原型链上的方法,都会在另一个对象的原型链上往上查找

不同点

写法:

Object.prototype.isPrototypeOf()

function foo(){} // 定义函数
foo.prototype = {
	a: 1
}; // 编辑函数的原型对象
let con = new foo(); // 创建对象实例
console.log(con.a);
//打印的是1,说明实例对象继承了foo函数的属性,那么foo函数自然也在con实例对象的原型链上了
console.log(foo.prototype.isPrototypeOf(con));  // true
console.log(Object.prototype.isPrototypeOf(con)); // true 对象原型链上都存在Object对象

instanceof

function foo(){} // 定义函数
let con = new foo(); //创建对象实例
console.log(con instanceof foo); // true
console.log(con instanceof Object); // true 对象原型链上都存在Object对象

instanceof会自动取出foo函数对象的原型,检测其是否在con对象实例的原型链上,而isPrototypeOf则需要以其原型作为参数,但是两者作用无异

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值