在 JavaScript 原生类型(如数组、字符串、数字等)中构建附加功能原型是一个坏主意吗?
我认为拥有像 myArr.pop() 等功能会很棒,但是如果有一天它成为 ECMAScript x 的一部分,并且与我的实现不同,那么它可能会破坏整个软件怎么办?
Prototype 是一个广泛扩展原生 Javascript 类型和 DOM 类的库,并且非常好地展示了扩展 Javascript 原生类型的好处、坏处和丑陋之处。
好处:您可以获得看起来自然的 Javascript 代码。
坏处:您忘记了您实际上正在使用 Prototype - 当您切换到不使用 Prototype 的项目时会产生混乱。 (为什么我不能……哦,对了,那是原型功能。)
丑陋之处:如果由于库、浏览器或规范冲突而导致方法定义(契约或签名不同的两种方法)发生冲突,您可能必须修改客户端代码以保持兼容性。这使得在一个已经受到它们困扰的世界中需要考虑更多的兼容性问题。
为了兼容性和保持我自己的想法清晰,我个人避免扩展原生或 DOM javascript 类型,并且更喜欢侵入性较小的库而不是 Prototype。
但是,如果您对这些缺点感到放心,请不要让我阻止您。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)