Вызов функции JavaScript не передает переменные класса - PullRequest
0 голосов
/ 23 августа 2010

Я не очень хорош в javascript и надеюсь, что ты жестче меня.Вот моя проблема: я использую MicrosoftAjax.cs Framework и использую классы, подобные этому:

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, значение, передаваемое в параметре, равно нулю, тогда как «нормальное» значение не вызывает никаких проблем.я могу видеть): -> GetId ("toto") -> MyClass.GetInformationFromName ("toto", "&", "???");-> GetInformationFromName (toto ", null," ??? ")

Есть ли у вас какие-либо намеки на это?

Ответы [ 2 ]

1 голос
/ 23 августа 2010

Вы неправильно устанавливаете teststring в своем конструкторе.Заметьте, как везде при вызове переменных и методов класса вам нужно использовать MyClass.methodname или MyClass.variablename?В своем конструкторе вы просто устанавливаете teststring="test", когда вам нужно установить MyClass.teststring="test" для переопределения значения по умолчанию null.

Я не вижу метод GetPerId в вашем фрагменте кода, поэтомуЯ не могу объяснить, почему VS отображает правильное значение там, но я могу сказать, что ваш конструктор устанавливает локальную переменную teststring, и вы передаете global переменная, когда вы звоните GetInformationFromName in GetID.

Кроме того, я не могу видеть, если и когда вы звоните $constructor в любом случае ... так что я не уверен на 100%, что вы даже устанавливаетелокальная teststring переменная.

0 голосов
/ 23 августа 2010

Thkx для тех, кто разделяет мысль об этом, я нашел свою ошибку. Я должен был использовать конструктор так:

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

извините за беспокойство, надеюсь, это поможет кому-нибудь однажды ...

...