0

我想在调用 scipt2 时传递值(用户名)。script1 独立,但在 script1 之后,所以到 script1 填充了值但需要它是持久的以供将来的脚本调用使用。

script1.js

 var user = "";
function method1(){

    var username = document.getElementById('username').value;
    var app = new UserText();
    app.setValue(username);
    // more logic
    }
function UserText(){

    this.getValue = function(){
        return this.user;
    };

    this.setValue = function(val){
        this.user = val;
    };
}

Script2.js

alert(UserText.getValue());
4

1 回答 1

1

您将不得不向全局范围公开某些内容。现在,当您调用 时method1(),用户名被存储在UserText. 该特定实例由您的变量表示,app该变量当前仅适用于该method1()函数。

解决这个问题的一种方法是简单地将声明移动app到全局范围。换句话说,将脚本的第一部分更改为以下内容:

var user = "";
var app;
function method1() {
    var username = document.getElementById('username').value;
    app = new UserText();
    app.setValue(username);
    // more logic
}

请注意,我已将var app声明移至全局范围。现在您可以通过以下方式使用您的用户值访问实例

alert(app.getValue());

在相关的说明中,您应该知道您的var user = "";行目前什么都不做,至少对于您提供给我们的代码。this.user当您在类内部读写时UserText,它使用该类的实例来存储信息,这就是为什么您会在app.user属性中找到您的值而不仅仅是user变量。

于 2012-09-27T17:01:24.360 回答