javascript - 对 JavaScript 原生类型进行原型(prototype)设计,气馁了?

标签 javascript prototype

在 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/

相关文章:

javascript - 数据表使用渲染数据搜索/过滤

javascript - 将 JS 原型(prototype)设计和 OOP 与实例变量混淆

javascript - 子类化错误: adding prototype methods does not take effect

javascript - 如何在 Jest 测试用例中默认模拟/考虑 javascript 原型(prototype)函数

javascript - 在 'this' 和对象的原型(prototype)方法中使用 'constructor' 时如何正确返回值?

javascript - 找不到路线/发布/添加

javascript - 不活动时不要使幻灯片内容变暗

javascript - 操作方法 : Bootstrap 4 Inline Checkboxes - change to stack on screen size change

JavaScript – 从另一个原型(prototype)函数调用原型(prototype)函数?

javascript - 验证码太长 : Maximum of '50' characters