对象上的默认函数是什么?

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()来代替test.call(),这可能吗?


可能是Can I overload an object with a function?的重复问题。 - Kendall Frey
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指的是返回的函数(对吗?)或窗口,所以你需要缓存this以便从函数内部访问它(this._func();

function func(_func) {
    var that = this;

    this._func = _func;

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

1
那帮了很大的忙。只是为了好玩,这是我最终使用的方式:http://jsfiddle.net/TkZ6d/9/ 再次感谢! - Elliot Bonneville

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接