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引用返回的函数(对吗?)或 window,您必须缓存this才能从函数内部访问它(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 回答