【问题标题】:Is there a way to change the prototype of an object in Internet Explorer?有没有办法在 Internet Explorer 中更改对象的原型?
【发布时间】:2013-02-04 14:25:56
【问题描述】:

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

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

这个回旋处的问题是旧的obj 引用丢失了,并且不会指向以proto 为原型的新obj。有没有办法改变IE中已有对象的原型?

【问题讨论】:

  • 没有。 __proto__ 只是一个 hack(它是非标准的),无论如何你都不应该使用它。目前无法在 JS 中更改现有对象的原型。 相关stackoverflow.com/q/13235313/218196stackoverflow.com/a/7223353/218196
  • @FelixKling:让它成为答案
  • 是的,我猜它可能不是,但只是想确定一下。感谢您的链接!

标签: javascript internet-explorer prototype


【解决方案1】:

不,没有。

__proto__ 只是一个 hack,无论如何你都不应该使用它(它不是标准功能)。目前无法在 JS 中更改现有对象的原型。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2012-03-22
      • 2019-12-19
      • 2011-08-13
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      • 2012-03-01
      • 2014-08-31
      • 2022-01-13
      相关资源
      最近更新 更多