我遇到了一个奇怪的错误?"当我尝试覆盖insert.onChange方法,并从覆盖内调用原始。这是我的callstack,我因为事件未定义而收到错误:
现在这里是堆栈中更深的一个框架,正如您所看到的,_onChange方法指向我们刚刚定义的函数,即使我已经引用了原始函数(insert.onChange) )新功能范围之外:
对我而言,真正奇怪的是第二次通过循环,在callstack的顶部,_onChange现在引用了正确的原始(匿名)函数。
我已经尝试将其包装在更多的闭包中,并阅读了关于覆盖和调用JS中的原始方法的SO的其他答案。任何帮助理解我做错的事情都会很棒。
谢谢! 托马斯
答案 0 :(得分:0)
如您所见,
_onChange
方法指向我们刚刚定义的函数
没有。我看到在你覆盖它之前引用了insert.onChange
的原始函数。请注意,函数(调试)名称不会因执行而改变。名称insert.onChange
并不意味着它是onChange
对象的当前insert
属性。
第二次循环,
_onChange
现在引用正确的原始(匿名)函数。
没有。它现在引用您自己的匿名函数,用于第一次覆盖insert.onChange
- 这是第二次覆盖它时onChange
属性的值。
你真的应该尝试name your function来获得更准确的调试信息。