0

申し訳ありませんが、この質問の仕方がわかりません...説明します。

私はこのコードを持っています:

function jclass_getVar() {
    return this.myvar;
}
function jclass() {
    this.myvar = "ok";
    this.funcAry = [];
}
jclass.prototype.getVar = jclass_getVar;

var obj = new jclass();

今はすべてが順調です。アクセスobj.getVar()すると戻りokますが、関数の配列を動的に作成したいとします。これは私のコードです:

function myMethod1() {
    return this.myvar;
}
function myMethod2() {
    return this.myvar;
}
obj.funcAry.push(myMethod1);
obj.funcAry.push(myMethod2);

そして、関数を呼び出したいときは、次のようにします。

for (var i in obj.funcAry) {
    obj.tempmethod = obj.funcAry[i];
    obj.tempmethod();
}
obj.tempmethod = undefined;

メソッドを呼び出すための時間変数を作成するのは好きではありません...メソッドを呼び出す「良い」方法はありますか?メソッド「this」がオブジェクトになりますか?

4

1 に答える 1

0

質問しながら検索すると、返信が見つかりました。答えはapply方法です:

それ以外の:

obj.tempmethod = myMethod1;
obj.tempmethod();
obj.tempmethod = undefined;

しなければならない:

myMethod1.apply(obj);
于 2013-03-22T20:33:06.813 に答える