ES6 对象的新增方法 Object
Object方法在ES6中属于深入拓展的内容,能够了解知晓即可,底层逻辑爱好者可以深入了解。
文章简介
本文是一篇关于ES6中对象的新增方法——Object的知识文章。主要内容为 __proto__属性
Object.setPrototypeOf()
Object.getPrototypeOf()
。在文章中会从理论和实践两个角度入手,代码片段可能比较多,需要耐心阅读。本文紧接ES6专栏ECMAScript(ES6)第五幕之【对象的新增方法——Object】(Object.getOwnPropertyDescriptors())中内容,进一步学习对象的新增方法。创作不易!多多关照!!
主要内容
,用来读取或设置当前对象的原型对象(prototype)。目前,所有浏览器都部署了这个属性。
// es5 的写法
const obj = {
method: function() {
... }
};
obj.__proto__ = someOtherObj;
比较主流的是es6写法 更加适应时代发展
// es6 的写法
var obj = Object.create(someOtherObj);
obj.method = function() {
... };
它本质上是一个内部属性,不是一个正式的对外的 API,只是由于浏览器广泛支持,才被加入了 ES6。
- 无论从语义的角度,还是从兼容性的角度,都不要使用这个属性,而是使用下面的
Object.setPrototypeOf()
(写操作)、Object.getPrototypeOf()
(读操作)、Object.create()
(生成操作)代替。
实现上,__proto__
调用的是Object.prototype.__proto__
具体实现如下:
Object.defineProperty(Object.prototype, '__proto__', {
get() {
let _thisObj = Object(this);
return Object.getPrototypeOf