How do I maintain scope with this?
Original
var Base = new function() {
var canvas;
var context;
this.init = function()
{
console.log("Canvas: " + $("canvas")[0])
this.canvas = $("canvas")[0];
console.log("Context: " + this.canvas.getContext('2d'))
this.context = this.canvas.getContext('2d');
$(window).resize(handleWindowResize);
handleWindowResize();
};
function handleWindowResize()
{
console.log("Resize Canvas [" + this.canvas + "] to {width: " +
$(window).width() + "," + $(window).width() + "}");
this.canvas.width = $(window).width();
this.canvas.height = $(window).height();
}
}
$(window).load(function() { new Base.init() });
Ouput:
Canvas: [object HTMLCanvasElement]
Context: [object CanvasRenderingContext2D]
Resize Canvas [undefined] to {width: 1680,1680}
Resize Canvas [undefined] to {width: 1680,1680}
Revised
var Base = function() {
this.canvas;
this.context;
}
Base.prototype = {
init: function()
{
console.log("init :: " + this);
this.canvas = $('canvas')[0];
this.context = this.canvas.getContext('2d')
$(window).resize(this.handleWindowResize);
this.handleWindowResize(null);
},
handleWindowResize: function()
{
console.log($(window) + " resized set canvas (" + this.canvas + ")" +
" width,height = " + $(window).width() + "," + $(window).height());
},
toString: function()
{
return "[Base]";
}
}
$(window).load(function() { var c = new Base(); c.init(); });
Output: (init)
init :: [Base]
[object Object] resized set canvas ([object HTMLCanvasElement]) width,height = 1659,630
Output: (on window resize)
[object Object] resized set canvas (undefined) width,height = 1658,630