有没有办法在Internet Explorer中更改对象的原型?

时间:2013-02-04 14:25:57

标签: javascript internet-explorer prototype

在IE中你不能使用obj.__proto__ = some_proto,但你可以通过使用函数继承来解决这个缺陷,例如:

func = function(){}
func.prototype = proto
obj = new func

此环形交叉口的问题在于,对obj的旧引用将丢失,并且不会指向以obj为原型的新proto。反正有没有改变IE中现有对象的原型?

2 个答案:

答案 0 :(得分:2)

不,没有。

__proto__只是一个黑客,你永远不应该使用它(它不是标准功能)。 JS目前无法更改现有对象的原型。

相关问题/答案:Changing prototype of an object which was created with literal initializationhttps://stackoverflow.com/a/7223353/218196

答案 1 :(得分:0)

为了回答我自己的问题,IE 11支持新的Object.setPrototypeOf方法。谨慎使用。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf