我的Javascript知识较少,因此下面可能会使用错误的描述。
我在静态.js文件中有一个对象:
var Info = {
methodA: function() {
// Call methodB.
this.methodB('test');
},
methodB: function(value) {
// Do stuff
}
}
现在,在一个.aspx文件中,我创建了一个函数methodC(value),该函数具有不同的内容(取决于某些数据),我想插入其中,而不是上面的methodB(value)定义:
...
var methodC = function(value) {
// Do different stuff
}
...
到目前为止,我的想法是以以下方式用methodC替换methodB:
...
Info.methodB = methodC;
...
使用IE的内置开发人员工具,调用this.methodB('test');时出现以下错误。来自Info.methodA():
对象不支持此属性
或方法
从this.methodB('test')中删除'this'会导致错误:
预期对象
使用FireBug不会出现任何错误-可能是因为我使用了各种框架,这些框架可能会捕获错误。
我应该怎么做还是应该使用完全不同的方法?
问候,卡斯珀
最佳答案
它应该起作用,您正在以正确的方式进行操作。问题出在其他地方。
更新:
只要您在对象(例如Info.methodA())上调用methodA,它就应该仍然有效。
也许您不理解错误消息?
“对象不支持此属性或方法”表示在表达式“ this.methodB()”中没有名为“ methodB”的属性。因此,这意味着在执行methodA的代码时,这不是Info。
“预期对象”是指变量methodB在当前执行上下文中未知。当然是这样,因为methodB绝不是变量,所以仅是Info的属性。
为了调试您的问题,您需要知道执行代码时这是什么,以及为什么它不是您认为的那样。当您调用Info.methodA()时,当methodA开始执行时,它设置为Info。
关于javascript - Javascript用包含动态内容的新函数替换了一个函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2056121/