JavaScript的
是否有可能在IE9或IE10中更改对象的__proto__
属性? 或者MS仍然没有计划将它包含在他们的JS引擎中?
我需要它在一个非常特殊的情况下,在创建对象后需要更改__proto__
。
__proto__
将在ES6中标准化。 它目前在ES6草案的附录B中,实际上意味着如果它被实现,它需要具有以下语义。
__proto__
既可作为Object.prototype
上的Object.prototype
,也就是说所有对象都可以在默认情况下读写它。 但是,它可以从Object.prototype
中delete
(使用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