首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ecmascript 6是否支持可变的__proto__属性?

Ecmascript 6是否支持可变的__proto__属性?
EN

Stack Overflow用户
提问于 2012-12-12 19:49:46
回答 2查看 1.5K关注 0票数 5

在当前的Ecmascript 6草案(2012年11月)中,有对__proto__属性的官方支持(第B.3.1节)。这有点让人惊讶,因为在当前的浏览器实现中,__proto__属性已被弃用。

如果当前的草案成立,ES6会完全支持可变原型吗?我是否能够像目前在Firefox中那样为现有对象提供新的原型?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-12 22:14:13

目前,计划将可变__proto__包含在规范中(而不仅仅是在附件b中)。目前的计划是让它成为一个神奇的数据属性,只存在于Object.prototype上,并充当访问器(神奇的部分)。此属性也将是可删除的,从而消除了在删除时更改该域__proto__的能力。我已经在我的ES6虚拟机http://benvie.github.com/continuum中按照这个描述实现了__proto__

最初,它将被弃用和替换,但没有就该替换达成共识。从内置继承的能力是最终目标,决定是__proto__已经广泛存在(除了ie之外的所有东西),并实现了这个目标,所以最小阻力的路径是拥抱和编码它。

票数 8
EN

Stack Overflow用户

发布于 2015-06-24 14:21:14

根据Ecmascript 6发布的文档,__proto__仍然存在,但正如BergiMattBrowne在上面的解决方案中指出的那样,我们可以使用Object.setPrototypeOf,它是__proto__的修改版本。

当使用参数O和proto调用setPrototypeOf函数时,将执行以下步骤:

返回值O设为RequireObjectCoercible(O).

  • ReturnIfAbrupt(O).

  • If类型()既不是Object也不为空,抛出状态不是Object(O) is not Object,
  • O,TypeError O.
  • 设为O.SetPrototypeOf.
  • ReturnIfAbrupt(status).
  • If exception.
  • Return为false,抛出TypeError proto O.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13839115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档