代码之家  ›  专栏  ›  技术社区  ›  Arthis

对javascript函数的调用不传递类变量

  •  0
  • Arthis  · 技术社区  · 15 年前

    我不太擅长JavaScript,我希望你比我更坚强。我的问题是:我使用MicrosoftAjax.cs框架,我使用的类如下:

    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时,传入参数的值为空,而“正常”值不会引起任何问题。

    发生了什么(我能看到的)的具体例子: ->获取ID(“toto”) ->myclass.getInformationFromName(“toto”,“&”,“?”“?”; ->getInformationFromName(toto),空,“?“?”

    你对此有什么提示吗?

    2 回复  |  直到 15 年前
        1
  •  1
  •   EAMann    15 年前

    你没有设置 teststring 在您的构造函数中是正确的。请注意,在调用需要使用的类变量和方法时,在其他任何地方 MyClass.methodname MyClass.variablename ?在构造函数中,只需设置 teststring="test" 你应该什么时候开始 MyClass.teststring="test" 覆盖的默认值 null .

    我看不到 GetPerId 方法,因此我无法解释vs在其中显示正确值的原因,但我可以告诉您构造函数正在设置 地方的 变量 测试字符串 你通过了一个 全球的 调用时的变量 GetInformationFromName 在里面 GetID .

    另外,我不知道你打电话的时间和时间 $constructor 总之…所以我不能百分之百确定你是否在设置本地 测试字符串 变量。

        2
  •  0
  •   Arthis    15 年前

    对于任何一个在这个问题上有共同想法的人,我发现了我的错误。我应该使用这样的构造函数:

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

    抱歉打扰了,希望有一天能帮上忙…