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)
规范
Specification | Status | Comment |
---|---|---|
ECMAScript 5.1 (ECMA-262) Object.getPrototypeOf |
Standard | Initial definition. |
ECMAScript 2015 (6th Edition, ECMA-262) Object.getPrototypeOf |
Standard | |
ECMAScript (ECMA-262) Object.getPrototypeOf |
Living Standard |
浏览器兼容
BCD tables only load in the browser
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Opera 特别提示
即使旧版本Opera不支持Object.getPrototypeOf()
,Opera 10.50之后还支持非标准的 __proto__
属性。