使用原型来扩展本机对象不好

Is using Prototype to extend native objects bad?

本文关键字:对象 本机 扩展 原型      更新时间:2023-09-26

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

我不

认为这很糟糕。如果你看一下Ruby on Rails,很多原生对象都用自定义功能进行了扩展,这是一个非常好的框架。

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

Andrew Dupont 的 JSConf 2011 视频中对此进行了很好的讨论。 http://blip.tv/jsconf/jsconf2011-andrew-dupont-everything-is-permitted-extending-built-ins-5211542

基本上要点是:

  • 不要扩展Object.prototype
  • 有些人可能喜欢扩展东西,有些人不喜欢
  • 你需要知道你在做什么
  • 不要使用两个扩展内容的库,因为它可能很糟糕
  • 扩展原型以添加标准功能几乎总是可以的。

我会避免扩展/修改本机对象的行为。

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

仅仅因为,几个月后,另一个编写另一段独立代码的开发人员不会立即识别更改的行为,除非在某处记录并在开始任务之前意识到它。

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

此外,本机对象及其方法针对各种情况进行了全面测试。因此,在修改本机功能之前,您必须完全确定自己在做什么。