JS object isPrototypeOf()

🌙
手机阅读
本文目录结构

**isPrototypeOf()** 方法用于测试一个对象是否存在于另一个对象的原型链上。

isPrototypeOf()instanceof 运算符不同。在表达式 “object instanceof AFunction“中,object 的原型链是针对 AFunction.prototype 进行检查的,而不是针对 AFunction 本身。

语法

prototypeObj.isPrototypeOf(object)

参数

object

在该对象的原型链上搜寻

返回值

Boolean,表示调用对象是否在另一个对象的原型链上。

报错

TypeError

如果 prototypeObj 为 undefined 或 null,会抛出 TypeError

描述

isPrototypeOf() 方法允许你检查一个对象是否存在于另一个对象的原型链上。

示例

本示例展示了 Baz.prototype, Bar.prototypeFoo.prototype 和 Object.prototypebaz 对象的原型链上:

function Foo() {}
function Bar() {}
function Baz() {}

Bar.prototype = Object.create(Foo.prototype);
Baz.prototype = Object.create(Bar.prototype);

var baz = new Baz();

console.log(Baz.prototype.isPrototypeOf(baz)); // true
console.log(Bar.prototype.isPrototypeOf(baz)); // true
console.log(Foo.prototype.isPrototypeOf(baz)); // true
console.log(Object.prototype.isPrototypeOf(baz)); // true

如果你有段代码只在需要操作继承自一个特定的原型链的对象的情况下执行,同 instanceof 操作符一样 isPrototypeOf() 方法就会派上用场,例如,为了确保某些方法或属性将位于对象上。

例如,检查 baz 对象是否继承自 Foo.prototype

if (Foo.prototype.isPrototypeOf(baz)) {
  // do something safe
}

规范

规范版本 规范状态 注解
ECMAScript 3rd Edition (ECMA-262) Standard 初始定义
ECMAScript 5.1 (ECMA-262) Object.prototype.hasOwnProperty Standard  
ECMAScript 2015 (6th Edition, ECMA-262)Object.prototype.hasOwnProperty Standard  
ECMAScript Latest Draft (ECMA-262)Object.prototype.hasOwnProperty Draft  

相关链接

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了