javascript
Is there any possibility to change the __proto__
property of an object in IE9 or IE10? Or is MS still not planning to include it in their JS engine?
I need it in a very special situation where I need to change __proto__
after the object is created.
__proto__
is going to be standardized in ES6. It is currently in Appendix B of the ES6 draft which in practice means that if it is implemented it needs to have the following semantics.
__proto__
is both available as an accessor on Object.prototype
which means that all objects can read and write it by default. However, it can be removed from Object.prototype
(using delete
). Once deleted __proto__
will work as a normal data property with no side effects on setting.
__proto__
is also a special syntactic form in object literals. It will work to set the [[Prototype]] even if Object.prototype.__proto__
was deleted.
var p = {a: 1}; var o = { __proto__: p, b: 2 }
ES6 also introduces Object.setPrototypeOf
(not in the appendix). This is preferred over setting __proto__
.
__proto__
is available in all modern browsers, including Internet Explorer 11.
__proto__
包含在Windows Blue泄漏版本中的IE11中:http://fremycompany.com/BG/2013/Internet-Explorer-11-rsquo-s-leaked-build-395/
A nonanswer as a last case resort:
Change your code so that all the properties that would originally be accessed via the changed prototype are now accessed via explicit delegation over a normal property:
{
a: 17,
__proto__: { ... }
}
to
{
a: 17,
proto: {...}
}
链接地址: http://www.djcxy.com/p/40872.html
上一篇: 滚动条与IE / Edge上的内容重叠
下一篇: JavaScript的