I have the following code:
var myPage = {};
myPage.component = function(callback){
var somethingHappened = true;
if (somethingHappened){
callback();
}
};
myPage.main = function(){
// Initialise.
this.init = function(){
// make an instance of my component
this.component = new myPage.component( this.callback );
// need my utility function here
this.doSomethingUseful();
};
// Callback to be executed when something happs in the component.
this.callback = function(){
this.doSomethingUseful(); // doesn't work
};
// A useful utility that needs to be accessible from both the
// init() and callback() functions
this.doSomethingUseful = function(){
// some utility stuff
};
};
new myPage.main().init();
What's the best way for me to ensure that the myPage.main scope is available when the callback function is executed from the component?
use bind:
this.callback = function(){
this.doSomethingUseful(); // doesn't work
}.bind(this);
If you want to supply scope, you can use Function.prototype.call
.
var foo = 'bar';
function(){
// this = 'bar';
}.call(foo);
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