Javascript用包含动态内容的新函数替换函数

时间:2010-01-13 11:09:16

标签: javascript function replace

我的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时没有任何错误 - 可能是因为我使用了各种框架,这可能会发现错误。

我该怎么做或者我应该使用完全不同的方法?

问候,卡斯帕

1 个答案:

答案 0 :(得分:4)

它应该有效,你正在以正确的方式做到这一点。问题出在其他地方。

更新: 只要在对象上调用methodA,这仍然可以工作,例如Info.methodA()。

也许你不理解错误信息?

“对象不支持此属性或方法”表示在表达式“this.methodB()”中,没有名为“methodB”的属性。因此,当执行 methodA 的代码时,不是 Info

“预期的对象”表示变量 methodB 在当前执行上下文中是未知的。当然是,因为 methodB 永远不是变量,只有 Info 的属性。

要调试您的问题,您需要在执行代码时知道这个是什么,以及为什么它不是您认为的应该是什么。当您调用 Info.methodA()时,当 methodA 开始执行时, 将设置为 Info 。< / p>