修改原型prototype的潜在风险
修改对象原型prototype的做法虽然便捷,但也存在潜在的风险。
回想一下 JavaScript 中字符串和数组的包含方法为何分别称为 includes() 而不是 contains() 以及 groupBy 作为静态方法的设计。原因在于,历史上曾有库(如 MooTools 和 Sugar) 在原型上添加了与标准不符的方法。为了兼容这些库,标准委员会被迫做出调整,从而避免破坏依赖它们的网站。
类似地,当标准委员会添加新功能到 JavaScript 时,他们会评估对现有环境的兼容性影响。如果影响太大,他们可能会做出改变以保持兼容性。然而,对于影响较小的个人修改,他们不会考虑兼容性,因此将来遇到破坏性更改的风险就落在了开发者的身上。