如果我在 String 上实现了一个方法 x,例如:
String.prototype.x = function (a) {...}
然后新版本的 javascript 实际上实现了 x 方法,但在另一种方式上,要么返回与我的实现不同的东西,要么返回比我的实现更多/更少参数的函数。这会破坏我的实现并覆盖它吗?
最佳答案
您将覆盖默认实现。
任何使用它的代码都将使用您的代码。
有人提议 scoped extension methods它被拒绝了,因为在 JS 引擎中实现它的计算成本太高。有人讨论了解决该问题的新提案(协议(protocol))。 ES6 符号也将为您提供一种解决方法(但语法丑陋)。
然而,这不是重点 - 这是一个没有人会告诉您的有趣事实。
没有人会在 String.prototype
上实现一个名为 x
的方法
您可以实现它并摆脱它。说真的,prollyfilling 和 polyfilling 是许多用例的可行、富有表现力和有趣的解决方案。如果您不是在编写库,我认为这是可以接受的。
关于javascript - 实现原型(prototype)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19965630/