我的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/

10-10 07:02