我在某处读到使用prototype
扩展本机对象(String
, Number
,Array
等)是一个坏主意。这是真的?为什么或者为什么不?
问问题
2477 次
3 回答
5
我不认为这很糟糕。如果您看一下 Ruby on Rails,就会发现很多原生对象都使用自定义功能进行了扩展,这是一个非常好的框架。
如果您更改本机对象上的现有方法,那将会很糟糕。这可能会导致无法预料的后果。
于 2012-04-17T18:50:38.290 回答
5
在 Andrew Dupont 的 JSConf 2011 的这段视频中对此进行了很好的讨论。http://blip.tv/jsconf/jsconf2011-andrew-dupont-everything-is-permitted-extending-built-ins-5211542
基本上要点是:
- 不要延长
Object.prototype
- 有些人可能喜欢扩展东西,有些人不喜欢
- 你需要知道你在做什么
- 不要使用两个扩展东西的库,因为它可能很糟糕
- 扩展原型以添加标准功能几乎总是可以的。
于 2012-04-17T19:54:06.113 回答
1
我不会扩展/修改本机对象的行为。
在团队环境中开发时,这至少是有意义的。
仅仅因为,几个月后,另一位开发人员编写另一段独立代码不会立即识别更改的行为,除非在某处记录并在开始他的任务之前意识到这一点。
相反,我建议封装/“命名空间”-ing 所有这些功能,以便有人可以选择或不使用修改后的功能。
此外,本机对象及其方法已针对广泛的案例进行了全面测试。因此,在修改本机功能之前,您必须完全确定自己在做什么。
于 2012-04-17T19:15:23.510 回答