我发布了一个问题,即我使用push
覆盖Object.defineProperty
。最初的问题是here。我正在处理的代码是my codepen。
用户留下以下评论:
在原型或实例化对象上覆盖本机方法是个坏主意
为什么?
我决定覆盖push
的原因是因为我需要在推送元素后让push
调用另一个方法。我没有改变push的功能,只是让它在完成时触发事件。
做我做的事情是不好的,如果有的话,还有什么选择呢?
答案 0 :(得分:6)
我能想到的一个问题是,现在你有一个非常特定于你的问题的推送方法,如果你以后需要普通的推送方法会怎样。你真的不知道是否会出现这种情况,但可能会导致你以后必须重构你的代码,以便正常推送"正常推送"和#34;改变推动"。
我能想到的另一个问题是,如果你做了类似这样的事情并且你不是唯一一个处理代码的人,那么其他人可能不知道push被覆盖并且不再遵循标准行为。
这可能会导致潜在问题。你可能没有经常改变它,但是如果你所做的改变导致错误,你可能会让别人挠头想知道为什么(在他看来正常)推动导致奇怪的行为。