Does anyone know of a way to get around declaring var self = this when using JavaScript in an OO fashion? I see it quite often and was curious if its just something you have to do, or if there really is a way (perhaps a class library?) that lets you get around it? I do realize why it is necessary (this has function scope). But you never know what clever ways may be out there..
For example, I usually code my "classes" like this in JS:
function MyClass() {
}
MyClass.prototype = {
    firstFunction: function() {
        var self = this;
        $.ajax({
            ...
            success: function() {
                self.someFunctionCall();
            }
        });
    },
    secondFunction: function() {
        var self = this;
        window.setTimeout(function() {
            self.someOtherFunction();
        }, 1000);
    }
};
                In your first function you can do this...
$.ajax({
    context: this,
    success: function() {
        this.someFunctionCall();
    }
});
In the second one, you can do this, though you'll need to shim .bind() in older browsers...
window.setTimeout(function() {
    this.someOtherFunction();
}.bind(this), 1000);
With jQuery, you could also do this...
window.setTimeout($.proxy(function() {
    this.someOtherFunction();
}, this), 1000);
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With