2010-10-07 83 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

相關問題