0

我知道 Object.prototype 的扩展充满了陷阱。扩展其他标准Javascript原型时是否有:String.prototype、Array.prototype、Function.prototype?

提前致谢。

[编辑] 相关:扩展 Object.prototype 的陷阱是什么?

4

2 回答 2

0
  1. 如果未来的浏览器版本实现Array.prototype.remove(因为升级到 EcmaScript 标准,或者通过他们自己的意愿),它们的实现将被我们的自定义版本覆盖,这不仅会降低效率(我们不能在方法优化的服务),但更重要的是,它们可能有不同的、非标准的结果。

  2. 扩展原生对象会扰乱对象迭代周期。论点是这样的:由于 for in 循环将访问对象原型链中的所有可枚举属性,因此自定义本机属性将意外地包含在此类迭代中。

  3. Object.prototype 的后代(即原型不明确为 null 的每个对象)如果碰巧定义了同名的属性,将失去对扩展属性的访问权。

http://javascriptweblog.wordpress.com/2011/12/05/extending-javascript-natives/

于 2012-08-16T14:45:35.137 回答
-1

真的很有帮助

在 Javascript 中扩展 Native

[编辑] 这不仅应该显示你可以,而且应该如何避免陷阱。:)

那么扩展 Natives 可以吗?

我已经描述了一些不增加原生原型的原因;你可能知道其他人。您需要决定您计划的扩展是否会解决这些问题,以及扩展是否会为您的代码库增加功能和清晰度。

于 2012-08-16T14:39:40.283 回答