0
function myclass()
{
    var pri_var;
    this.pub_var;
    this.pub_func = function(which_object)
    {
        pri_var = which_object;
        this.pub_var = which_object + " pub";
    }
    this.pub_func1 = function()
    {
        console.log(this);
        alert(this.pub_var);
        alert(pri_var);
    }
}

instance1 = new myclass();
instance2 = new myclass();
instance1.pub_func("first");
instance2.pub_func("second");
//instance1.pub_func1();
//instance2.pub_func1();
function callCallback(callback1, callback2){
callback1("first");
callback2("second");
}
callCallback(instance1.pub_func1, instance2.pub_func1);

private 変数は正しく記述されていますが、public は定義されていません。これは、myclass インスタンスではなく window を指しているためです。

クラス内で定義されたコールバックでパブリック変数にアクセスするための解決策は何ですか?

可能な答え

function myclass()
{
    var pri_var;
    this.pub_var;
    var that = this;
    this.pub_func = function(which_object)
    {
        pri_var = which_object;
        that.pub_var = which_object + " pub";
    }
    this.pub_func1 = function()
    {
        console.log(this);
        alert(that.pub_var);
        alert(pri_var);
    }
}

instance1 = new myclass();
instance2 = new myclass();
instance1.pub_func("first");
instance2.pub_func("second");
//instance1.pub_func1();
//instance2.pub_func1();
function callCallback(callback1, callback2){
callback1("first");
callback2("second");
}
callCallback(instance1.pub_func1, instance2.pub_func1);
4

3 に答える 3

0

あなたの機能

this.pub_func1 = function()
{
    console.log(this);
    alert(this.pub_var);
    alert(pri_var);
}

この呼び出しでパラメーターを受け入れるように求められています:

callCallback(instance1.pub_func1, instance2.pub_func1);

function callCallback(callback1, callback2){
   callback1("first");
   callback2("second");
}

関数が渡された変数を受け入れるように設定されていることを確認してください。また、コンテキストに関する RobG のコメントも重要です。ただし、この問題は複雑な構文が原因である可能性があります。

于 2013-10-09T06:01:38.153 に答える