0
我试图覆盖数组上的push
。我需要能够在重写之前调用原始的push
方法,以便将元素推送到数组上。重写数组推送时调用原始方法
以下是我的代码。我在value
方法中添加了list.push
。我知道这是错误的,但我添加它来显示我正在尝试做什么。
let list = [
'One',
'Two',
'Three'
]
Object.defineProperty(list, 'push', {
value: function(el) {
list.push(el) // I know this is wrong. Example of what I am trying to do.
}
})
这是一个坏主意来覆盖本地方法,无论是在原型或实例化对象 – ftor
能否请您解释一下为什么它的一个坏主意,还有什么替代方案?这里是完整的代码:http://codepen.io/JamesTheHacker/pen/dXvdBb 我决定重写'push',因为在将一个元素推送到一个数组后,我想'push'来调用另一个方法。即当一个项目被推动时触发一个事件。 如果你有一个更好的替代方法,这是一个“更好”的方法来做到这一点,我很乐意听到它。谢谢。 – BugHunterUK
@ LUH3417随时回答:http://stackoverflow.com/questions/38098876/why-is-it-a-bad-idea-to-override-native-methods – BugHunterUK