__proto__ for IE9 or IE10

__proto__ for IE9 or IE10

本文关键字:IE10 or for proto IE9      更新时间:2023-09-26

是否有可能在IE9或IE10中更改对象的__proto__属性?还是微软仍然不打算在他们的JS引擎中包含它?

我在一个非常特殊的情况下需要它,我需要在对象创建后更改__proto__

__proto__将在ES6中标准化。它目前在ES6草案的附录B中,这实际上意味着如果它被实现,它需要具有以下语义。

__proto__作为Object.prototype的访问器都是可用的,这意味着默认情况下所有对象都可以读写它。然而,它可以从Object.prototype中移除(使用delete)。一旦删除,__proto__将作为一个正常的数据属性工作,在设置时没有副作用。

__proto__也是对象字面量中的一种特殊语法形式。即使删除了Object.prototype.__proto__,也可以设置[[Prototype]]。

<>之前Var p = {a: 1};Var 0 = {__proto__: pb: 2}之前

ES6还引入了Object.setPrototypeOf(不在附录中)。这优于设置__proto__

__proto__可在所有现代浏览器中使用,包括Internet Explorer 11。

__proto__包含在IE11中,在Windows Blue的泄漏版本中发现:http://fremycompany.com/BG/2013/Internet-Explorer-11-rsquo-s-leaked-build-395/

不得已不回答:

修改你的代码,使所有原本可以通过修改后的原型访问的属性现在都可以通过普通属性的显式委托访问:

{
   a: 17,
   __proto__: { ... }
}

{
   a: 17,
   proto: {...}
}

我不确定你到底是什么,因为你的问题没有指定,但对于大多数用途的原型,你应该能够使用prototype

var foo = new Bar();
//this also affects foo
Bar.prototype.baz = something;