覆盖javascript方法并调用原始的错误?

时间:2016-02-24 17:26:29

标签: javascript methods closures

我遇到了一个奇怪的错误?"当我尝试覆盖insert.onChange方法,并从覆盖内调用原始。这是我的callstack,我因为事件未定义而收到错误:

enter image description here

现在这里是堆栈中更深的一个框架,正如您所看到的,_onChange方法指向我们刚刚定义的函数,即使我已经引用了原始函数(insert.onChange) )新功能范围之外:

enter image description here

对我而言,真正奇怪的是第二次通过循环,在callstack的顶部,_onChange现在引用了正确的原始(匿名)函数。

enter image description here

我已经尝试将其包装在更多的闭包中,并阅读了关于覆盖和调用JS中的原始方法的SO的其他答案。任何帮助理解我做错的事情都会很棒。

谢谢! 托马斯

1 个答案:

答案 0 :(得分:0)

  

如您所见,_onChange方法指向我们刚刚定义的函数

没有。我看到在你覆盖它之前引用了insert.onChange的原始函数。请注意,函数(调试)名称不会因执行而改变。名称insert.onChange并不意味着它是onChange对象的当前insert属性。

  

第二次循环,_onChange现在引用正确的原始(匿名)函数。

没有。它现在引用您自己的匿名函数,用于第一次覆盖insert.onChange - 这是第二次覆盖它时onChange属性的值。

你真的应该尝试name your function来获得更准确的调试信息。