在 IE 中你不能使用obj.__proto__ = some_proto
,但你可以通过函数使用继承来解决这个缺陷,例如:
func = function(){}
func.prototype = proto
obj = new func
这个回旋处的问题是旧的引用obj
丢失了,并且不会指向新obj
的proto
作为原型。有没有办法改变 IE 中现有对象的原型?
在 IE 中你不能使用obj.__proto__ = some_proto
,但你可以通过函数使用继承来解决这个缺陷,例如:
func = function(){}
func.prototype = proto
obj = new func
这个回旋处的问题是旧的引用obj
丢失了,并且不会指向新obj
的proto
作为原型。有没有办法改变 IE 中现有对象的原型?
不,没有。
__proto__
只是一个 hack,无论如何你都不应该使用它(它不是标准功能)。目前无法在 JS 中更改现有对象的原型。
相关问题/答案:更改使用文字初始化创建的对象的原型,https://stackoverflow.com/a/7223353/218196
为了回答我自己的问题,IE 11 支持新的 Object.setPrototypeOf 方法。需谨慎使用。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf