阿西河

所有教程

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

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JS Object.getPrototypeOf()

      **Object.getPrototypeOf()** 方法返回指定对象的原型(内部[[Prototype]]属性的值)。

      语法

      Object.getPrototypeOf(object)
      
      

      参数

      obj

      要返回其原型的对象。

      返回值

      给定对象的原型。如果没有继承属性,则返回 null 。

      示例

      var proto = {};
      var obj = Object.create(proto);
      Object.getPrototypeOf(obj) === proto; // true
      
      var reg = /a/;
      Object.getPrototypeOf(reg) === RegExp.prototype; // true
      

      说明

      Object.getPrototypeOf(Object)  不是  Object.prototype

      JavaScript中的 Object 是构造函数(创建对象的包装器)。
      一般用法是:
      var obj = new Object();
      
      所以:
      Object.getPrototypeOf( Object );               // ƒ () { [native code] }
      Object.getPrototypeOf( Function );             // ƒ () { [native code] }
      
      Object.getPrototypeOf( Object ) === Function.prototype;        // true
      
      Object.getPrototypeOf( Object )是把Object这一构造函数看作对象,
      返回的当然是函数对象的原型,也就是 Function.prototype。
      
      正确的方法是,Object.prototype是构造出来的对象的原型。
      var obj = new Object();
      Object.prototype === Object.getPrototypeOf( obj );              // true
      
      Object.prototype === Object.getPrototypeOf( {} );               // true
      

      Notes

      在 ES5 中,如果参数不是一个对象类型,将抛出一个TypeError异常。在 ES2015 中,参数会被强制转换为一个 Object

      Object.getPrototypeOf('foo');
      // TypeError: "foo" is not an object (ES5 code)
      Object.getPrototypeOf('foo');
      // String.prototype                  (ES2015 code)
      

      规范

      SpecificationStatusComment
      ECMAScript 5.1 (ECMA-262) Object.getPrototypeOfStandardInitial definition.
      ECMAScript 2015 (6th Edition, ECMA-262)Object.getPrototypeOfStandard 
      ECMAScript Latest Draft (ECMA-262)Object.getPrototypeOfDraft 

      Opera 特别提示

      即使旧版本Opera不支持Object.getPrototypeOf(),Opera 10.50之后还支持非标准的 __proto__属性。

      相关链接

      目录
      目录