在当前的Ecmascript 6草案(2012年11月)中,有对__proto__属性的官方支持(第B.3.1节)。这有点让人惊讶,因为在当前的浏览器实现中,__proto__属性已被弃用。
如果当前的草案成立,ES6会完全支持可变原型吗?我是否能够像目前在Firefox中那样为现有对象提供新的原型?
发布于 2012-12-12 22:14:13
目前,计划将可变__proto__包含在规范中(而不仅仅是在附件b中)。目前的计划是让它成为一个神奇的数据属性,只存在于Object.prototype上,并充当访问器(神奇的部分)。此属性也将是可删除的,从而消除了在删除时更改该域__proto__的能力。我已经在我的ES6虚拟机http://benvie.github.com/continuum中按照这个描述实现了__proto__。
最初,它将被弃用和替换,但没有就该替换达成共识。从内置继承的能力是最终目标,决定是__proto__已经广泛存在(除了ie之外的所有东西),并实现了这个目标,所以最小阻力的路径是拥抱和编码它。
发布于 2015-06-24 14:21:14
根据Ecmascript 6发布的文档,__proto__仍然存在,但正如Bergi和MattBrowne在上面的解决方案中指出的那样,我们可以使用Object.setPrototypeOf,它是__proto__的修改版本。
当使用参数O和proto调用setPrototypeOf函数时,将执行以下步骤:
返回值O设为RequireObjectCoercible(O).
https://stackoverflow.com/questions/13839115
复制相似问题