使用Prototype扩展本机对象不好吗?

时间:2012-04-17 18:47:26

标签: javascript prototype

我在某处读到使用prototype扩展原生对象(StringNumberArray等等)是一个坏主意。这是真的?为什么或为什么不呢?

3 个答案:

答案 0 :(得分:6)

我不认为这很糟糕。如果您看一下Ruby on Rails,很多本地对象都可以使用自定义功能进行扩展,这是一个非常好的框架。

如果您在本机对象上更改现有方法,那会有什么不好。这可能会导致不可预见的后果。

答案 1 :(得分:5)

安德鲁·杜邦在JSConf 2011的视频中对此进行了很好的讨论。 http://blip.tv/jsconf/jsconf2011-andrew-dupont-everything-is-permitted-extending-built-ins-5211542

基本上要点是:

  • 不要延长Object.prototype
  • 有些人可能喜欢延伸,有些人不喜欢
  • 您需要知道自己在做什么
  • 不要使用两个扩展内容的库,因为它可能不好
  • 扩展原型以添加标准功能几乎总是可以。

答案 2 :(得分:1)

我不想扩展/修改原生对象的行为。

在团队环境中进行开发至少是有意义的。

仅仅因为,几个月之后,另一位编写另一段独立代码的开发人员并没有立即认识到改变的行为,除非在某处记录并在开始任务之前了解它。

相反,我建议封装/“命名空间” - 所有这些功能,以便某人可能选择或不使用修改后的功能。

此外,本机对象及其方法已针对广泛的案例进行了全面测试。因此,在修改本机功能之前,您必须完全确定自己在做什么。