Elliot Bonneville Elliot Bonneville - 2 months ago 10
Javascript Question

Default function on an object?

Is it possible to set a default function on an object, such that when I call

myObj()
that function is executed? Let's say I have the following
func
object

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

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

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

test.call();


‚ÄčI'd like to replace
test.call()
with simply
test()
. Is that possible?

Answer

return a function:

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

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

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

test();

but then this refers to the returned function (right?) or window, you will have to cache this to access it from inside the function (this._func();)

function func(_func) {
    var that = this;

    this._func = _func;

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