阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      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.hasOwnPropertyStandard 
      ECMAScript 2015 (6th Edition, ECMA-262)Object.prototype.hasOwnPropertyStandard 
      ECMAScript Latest Draft (ECMA-262)Object.prototype.hasOwnPropertyDraft 

      相关链接

      目录
      目录