Javascript 调整大小时画布引用丢失

Javascript 调整大小时画布引用丢失,javascript,html,canvas,dom-events,Javascript,Html,Canvas,Dom Events,我有一个网格“类”,它监听窗口上的调整大小事件并调用一个函数,现在它只是记录对DOM元素的引用。在resize之前访问el工作得很好,在resize之后它也会以同样的方式工作,但是在我的resize事件回调期间,它是未定义的。有什么好处 function Grid (el) { this.el = document.querySelector(el); this.init(); } Grid.prototype.init = function() { window.addEvent

我有一个网格“类”,它监听窗口上的调整大小事件并调用一个函数,现在它只是记录对DOM元素的引用。在resize之前访问el工作得很好,在resize之后它也会以同样的方式工作,但是在我的resize事件回调期间,它是未定义的。有什么好处

function Grid (el) {
  this.el = document.querySelector(el);
  this.init();
}

Grid.prototype.init = function() {
  window.addEventListener('resize', this.resizeCanvas, false);
}

Grid.prototype.resizeCanvas = function() {
  console.log(this.el);
}

每当我调整浏览器大小时,都会记录undefined。

网格上下文不会调用resizeCanvas。一种选择是这样做:

Grid.prototype.init = function() {
  var self = this;
  window.addEventListener('resize', function () {
    self.resizeCanvas();
  }, false);
}

发生这种情况的原因是
窗口中的
This
。addEventListener('resize',This.resizeCanvas,false)指的是
窗口
对象,而不是
网格