7

オブジェクトにデフォルトの関数を設定して、myObj()その関数を呼び出すと実行されるようにすることはできますか?func次のオブジェクトがあるとしましょう

function func(_func) {
    this._func = _func;

    this.call = function() {
        alert("called a function");
        this._func();
    }
}

var test = new func(function() {
    // do something
});

test.call();

test.call()単純に置き換えたいのですがtest()。それは可能ですか?

4

1 に答える 1

7

関数を返します:

function func(_func) {
    this._func = _func;

    return function() {
        alert("called a function");
        this._func();
    }
}

var test = new func(function() {
    // do something
});

test();

ただしthis返された関数 (右?) または windowthisを参照する場合、関数内からアクセスするにはキャッシュする必要があります ( this._func();)

function func(_func) {
    var that = this;

    this._func = _func;

    return function() {
        alert("called a function");
        that._func();
    }
}
于 2012-05-10T13:54:02.623 に答える