为什么覆盖原生方法是个坏主意?

时间:2016-06-29 11:58:28

标签: javascript

我发布了一个问题,即我使用push覆盖Object.defineProperty。最初的问题是here。我正在处理的代码是my codepen

用户留下以下评论:

  

在原型或实例化对象上覆盖本机方法是个坏主意

为什么?

我决定覆盖push的原因是因为我需要在推送元素后让push调用另一个方法。我没有改变push的功能,只是让它在完成时触发事件。

做我做的事情是不好的,如果有的话,还有什么选择呢?

1 个答案:

答案 0 :(得分:6)

我能想到的一个问题是,现在你有一个非常特定于你的问题的推送方法,如果你以后需要普通的推送方法会怎样。你真的不知道是否会出现这种情况,但可能会导致你以后必须重构你的代码,以便正常推送"正常推送"和#34;改变推动"。

我能想到的另一个问题是,如果你做了类似这样的事情并且你不是唯一一个处理代码的人,那么其他人可能不知道push被覆盖并且不再遵循标准行为。

这可能会导致潜在问题。你可能没有经常改变它,但是如果你所做的改变导致错误,你可能会让别人挠头想知道为什么(在他看来正常)推动导致奇怪的行为。