在 JavaScript 的原生类型(如 Array、String、Number 等)中制作附加功能的原型(prototype)是个坏主意吗?
我认为拥有像 myArr.pop() 等功能会很棒,但如果有一天它成为 ECMAScript x 的一部分——并且与我的实现不同,那么它可能会破坏整个软件怎么办?
最佳答案
Prototype 是一个广泛扩展原生 Javascript 类型和 DOM 类的库,并且非常好地展示了扩展 Javascript 原生类型的优点、缺点和丑陋之处。
优点:您将获得看起来自然的 Javascript 代码。
坏处:您忘记了您实际上是在使用 Prototype - 当您切换到一个不使用 Prototype 的项目时会产生困惑。 (为什么我不能......哦,对,那是原型(prototype)功能。)
丑陋之处:如果由于库、浏览器或规范冲突而导致方法定义发生冲突(两种方法在契约(Contract)或签名上有所不同),您可能必须修改客户端代码以保持兼容性。这使得在已经被它们困扰的世界中需要考虑更多的兼容性。
为了兼容性和保持我自己的想法清晰,我个人避免扩展原生或 DOM javascript 类型,并且更喜欢侵入性较小的库而不是 Prototype。
但是,如果您对这些缺点感到放心,请不要让我阻止您。
关于javascript - 对 JavaScript 原生类型进行原型(prototype)设计,气馁了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3085240/