2010-08-23 47 views
0

我對JavaScript的表現不太好,我希望你比我強。這裏是我的問題:我用MicrosoftAjax.cs框架,我使用類像這樣的:調用JavaScript函數不會傳遞類變量

MyClass = 
{ 
teststring:null, 
$constructor: function(test){ 
teststring = "test"; 
}, 
GetInformationFromName : function(inputname, BeginningSeparator, EndSeparator) { 
    alert(BeginningSeparator); 
    alert(EndSeparator); 
}, 
GetId: function(inputname) { 
      return MyClass.GetInformationFromName(inputname,MyClass.teststring, "???"); 
     } 
} 

這是一個非常簡單的功能,在這裏我只是想提取()在GETID給出名稱的信息。

我的問題是,在GetPerId中,我可以看到(在Visual Studio的調試器中)MyClass.teststring的值。但是,當我調試到函數的調用,並且到達GetInformationFromName時,參數中傳遞的值爲null,而「正常」值不會造成任何麻煩。

發生了什麼(的我所看到的)具體的例子: - > GETID( 「TOTO」) - > MyClass.GetInformationFromName( 「TOTO」, 「&」, 「???」); - > GetInformationFromName(TOTO」,NULL, 「???」)

你會有關的任何暗示

回答

1

你沒有在你的構造設置teststring適當注意如何,在其他地方,什麼時候?。調用類變量,你需要使用MyClass.methodnameMyClass.variablename?在你的構造方法,您只需設置teststring="test"時,您應該設置MyClass.teststring="test"覆蓋的null默認值。

我沒有看到一個GetPerId方法在你的代碼snippet,所以我無法解釋爲什麼VS顯示正確的價值,但我可以告訴你,你的構造函數設置了本地變量teststring,並且當你撥打時,你會通過全局變量GetID

此外,我無法看到是否以及何時調用$constructor ...所以我不是100%確定你甚至設置了當地的teststring變量。

+0

THX你EAMann! – Arthis 2010-08-23 14:53:11

0

thkx對於任何人在這個共享想法,我發現我的錯誤。我應該使用構造是這樣的:

$constructor: function(test){ 
MyClass.teststring = "test"; 
} 

抱歉打擾,希望它可以幫助別人第一天開始...