2010-10-07 39 views
0

我有一个使用文字符号定义的对象,如下所示(使用示例代码)。这是在一个外部脚本文件中。无法在我的JavaScript对象中重新定义函数

if (RF == null) var RF = {}; 
RF.Example= { 
    onDoSomething: function() { alert('Original Definition');} , 
    method1 : function(){ RF.Example.onDoSomething(); } 
} 

在我的.aspx页面中我有以下..

$(document).ready(function() { 
     RF.Example.onDoSomething = function(){ alert('New Definition'); }; 
     RF.Example.method1(); 
    }); 

当页面加载的document.ready被称为但是alert('Original Definition');只会被显示。有人能指引我走向正确的方向吗?我基本上想重新定义onDoSomething函数。谢谢,本。

编辑

感谢您的意见,我可以看到正在工作。 method1实际上是否调用另一种方法将onDoSomething()函数作为回调参数,这很重要吗?例如

method1 : function(){ 
      RF.Example2.callbackFunction(function() {RF.Example.onDoSomething();}); 
      } 
+1

你的例子在这里工作正常:http://jsfiddle.net/TD7E4/必须有别的事情,你没有提到。 – RoToRa 2010-10-07 11:00:44

+0

重新编辑:没有,这不应该有所作为。也许对'method1'的引用存储在某处,并且使用该引用而不是'method1'?你确定外部脚本文件在'document.ready'之前被加载和执行了吗? – RoToRa 2010-10-07 11:19:29

回答

0

感谢您的回应..最终答案与发布的代码无关。为验证我没有去疯狂,欢呼声。

1

您的代码所报应该工作(并执行:http://jsbin.com/uguva4),所以比什么在你的问题是导致此行为的其他东西。例如,如果您正在使用任何类型的JavaScript编译器(如Closure)或缩小器等,则可能会更改名称,这种情况下,您将在旧的名称重命名时添加新的onDoSomething。或者,警报可能是由其他事件触发的,而不是您认为触发的警报。或者别的东西可能已经抓住了对旧的onDoSomething的引用(可能在外部脚本中的其他地方)并直接使用它,如下所示:http://jsbin.com/uguva4/2

相关问题