JavaScript的

是否有可能在IE9或IE10中更改对象的__proto__属性? 或者MS仍然没有计划将它包含在他们的JS引擎中?

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


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

__proto__既可作为Object.prototype上的Object.prototype ,也就是说所有对象都可以在默认情况下读写它。 但是,它可以从Object.prototypedelete (使用delete )。 一旦删除__proto__将作为一个正常的数据属性,对设置没有副作用。

__proto__也是对象文字中的一种特殊语法形式。 即使Object.prototype.__proto__被删除,它也会设置[[Prototype]]。

var p = {a: 1};
var o = {
  __proto__: p,
  b: 2
}

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

__proto__适用于所有现代浏览器,包括Internet Explorer 11。


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


作为最后一种情况的一个无人问津:

更改您的代码,以便通过更改原型访问的所有属性现在都可以通过正常属性的显式委派来访问:

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

{
   a: 17,
   proto: {...}
}
链接地址: http://www.djcxy.com/p/40871.html

上一篇: javascript

下一篇: Understanding the scope of "this" keyword