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 中,如果参数不是一个对象类型,将抛出一个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 Latest Draft (ECMA-262) Object.getPrototypeOf |
Draft |
浏览器兼容
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.
Update compatibility data on GitHub
Desktop | Mobile | Server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
getPrototypeOf |
Chrome Full support 5 | Edge Full support 12 | Firefox Full support 3.5 | IE Full support 9 | Opera Full support 12.1 | Safari Full support 5 | WebView Android Full support Yes | Chrome Android Full support 18 | Firefox Android Full support 4 | Opera Android Full support Yes | Safari iOS Full support Yes | Samsung Internet Android Full support Yes | nodejs Full support Yes |
Legend
- Full support
- Full support
Opera 特别提示
即使旧版本Opera不支持Object.getPrototypeOf()
,Opera 10.50之后还支持非标准的 __proto__
属性。