我知道 Object.prototype 的扩展充满了陷阱。扩展其他标准Javascript原型时是否有:String.prototype、Array.prototype、Function.prototype?
提前致谢。
[编辑] 相关:扩展 Object.prototype 的陷阱是什么?
我知道 Object.prototype 的扩展充满了陷阱。扩展其他标准Javascript原型时是否有:String.prototype、Array.prototype、Function.prototype?
提前致谢。
[编辑] 相关:扩展 Object.prototype 的陷阱是什么?
如果未来的浏览器版本实现
Array.prototype.remove
(因为升级到 EcmaScript 标准,或者通过他们自己的意愿),它们的实现将被我们的自定义版本覆盖,这不仅会降低效率(我们不能在方法优化的服务),但更重要的是,它们可能有不同的、非标准的结果。扩展原生对象会扰乱对象迭代周期。论点是这样的:由于 for in 循环将访问对象原型链中的所有可枚举属性,因此自定义本机属性将意外地包含在此类迭代中。
Object.prototype 的后代(即原型不明确为 null 的每个对象)如果碰巧定义了同名的属性,将失去对扩展属性的访问权。
http://javascriptweblog.wordpress.com/2011/12/05/extending-javascript-natives/
真的很有帮助
[编辑] 这不仅应该显示你可以,而且应该如何避免陷阱。:)
那么扩展 Natives 可以吗?
我已经描述了一些不增加原生原型的原因;你可能知道其他人。您需要决定您计划的扩展是否会解决这些问题,以及扩展是否会为您的代码库增加功能和清晰度。