2010-06-21 52 views
1

嗨我在單獨的js文件中的以下函數如何在爲對象分配值時調用函數

//in js file 1 
setUsername: function(v){ 
document.Load.LogUsername = v; 
} 
//in js file 2{wrapper for js file 1} 
LogUserName: function(v) 
{ 
    return myobject.SetLoguserName(v); 
} 

當調用document.Load.LogUsername = v;時,我需要它來調用LogUserName函數。 LogUserName是setUsername的包裝器。任何想法如何讓這個工作。我知道如果將 document.Load.LogUsername = v;更改爲document.Load.LogUsername(v);然後它可以工作,但我被要求不要更改js文件1

+0

請編輯您的問題,所以我們可以看到你的javascript代碼正確 – jigfox 2010-06-21 17:21:37

+0

我不認爲有一個跨瀏覽器的方式做到這一點,或者在IE的所有甚至任何方式,但我感興趣的是看看cogniscenti不得不說什麼。 – Pointy 2010-06-21 17:23:33

回答

1

您需要保存原有的功能,如:

var originalLogUserName = document.Load.LogUsername; 
LogUserName: function(v) 
{ 
    return originalLogUserName.call(myobject, v); 
} 
+0

感謝您的快速回復,但我被要求不要修改原始功能 – wolv 2010-06-21 17:28:13

+0

@wolv:這不會修改原始功能。此代碼可以在第二個腳本中運行,並將原始函數簡單地保存到變量中。然後您可以從變量中調用該函數。 – SLaks 2010-06-21 17:37:35

1

您需要使用setter 。例如:

document.Load = 
{ 
    set LogUsername(v) 
    { 
    myobject.SetLoguserName(v); 
    } 
}; 
+0

謝謝你能解釋一下例子,我是新來的javascript – wolv 2010-06-21 17:28:54

+0

@SLaks,[這篇文章](http://robertnyman.com/2009/05/28/getters-and-setters-with-javascript-code-samples-and -demos /)表示Firefox,Safari,Chrome和Opera都支持這種語法。我在Chrome中進行了驗證。 – 2010-06-21 18:08:54

+0

我不知道;謝謝。 – SLaks 2010-06-21 19:35:24

相關問題