非常教程

JavaScript参考手册

对象 | Object

object.isPrototypeOf

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

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

语法

prototypeObj.isPrototypeOf(object)

参数

object在该对象的原型链上搜寻

报错

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

描述

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

描述

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
}

规范

Specification

Status

Comment

ECMAScript 3rd Edition (ECMA-262)

Standard

Initial definition.

ECMAScript 5.1 (ECMA-262)The definition of 'Object.prototype.isPrototypeOf' in that specification.

Standard

ECMAScript 2015 (6th Edition, ECMA-262)The definition of 'Object.prototype.isPrototypeOf' in that specification.

Standard

ECMAScript Latest Draft (ECMA-262)The definition of 'Object.prototype.isPrototypeOf' in that specification.

Living Standard

浏览器兼容性

Feature

Chrome

Edge

Firefox

Internet Explorer

Opera

Safari

Basic Support

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

Feature

Android

Chrome for Android

Edge mobile

Firefox for Android

IE mobile

Opera Android

iOS Safari

Basic Support

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

(Yes)

JavaScript

JavaScript 是一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的解释型语言。它已经由ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器( Chrome、IE、FireFox、Safari、Opera )支持。JavaScript 是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持 I/O,比如网络