我的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
}
...
到目前为止,我的想法是以下列方式将methodB替换为methodC:
...
Info.methodB = methodC;
...
使用IE的buildin开发人员工具,调用this.methodB('test')时出现以下错误;来自Info.methodA():
Object不支持此属性 或方法
从this.methodB('test')中删除'this'会导致错误:
预期对象
我使用FireBug时没有任何错误 - 可能是因为我使用了各种框架,这可能会发现错误。
我该怎么做或者我应该使用完全不同的方法?
问候,卡斯帕
答案 0 :(得分:4)
它应该有效,你正在以正确的方式做到这一点。问题出在其他地方。
更新: 只要在对象上调用methodA,这仍然可以工作,例如Info.methodA()。
也许你不理解错误信息?
“对象不支持此属性或方法”表示在表达式“this.methodB()”中,此没有名为“methodB”的属性。因此,当执行 methodA 的代码时,此不是 Info 。
“预期的对象”表示变量 methodB 在当前执行上下文中是未知的。当然是,因为 methodB 永远不是变量,只有 Info 的属性。
要调试您的问题,您需要在执行代码时知道这个是什么,以及为什么它不是您认为的应该是什么。当您调用 Info.methodA()时,当 methodA 开始执行时, 将设置为 Info 。< / p>