Javascript ООП: как ссылаться на объект - PullRequest
3 голосов
/ 02 февраля 2012

У меня есть следующий объект JavaScript. Когда окно изменяет размеры, я хочу, чтобы оно вызывало свой собственный метод resize(). Однако в функции window.onresize this относится к window, а не к объекту Canvas. Как мне вызвать объект Canvas?

function Canvas(element) {
    this.element = element;
    this.canvas = element.getContext("2d");
    this.width = element.width;
    this.height = element.height;

    this.resize = function () {
        this.width = window.innerWidth;
        this.height = window.innerHeight;

        this.element.width = this.width;
        this.element.height = this.height;
    };

    window.onresize = function () {
        this.resize();
          ^- error
    };
}

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 02 февраля 2012
window.onresize = this.resize.bind(this);

Если вы поддерживаете старые браузеры, включите исправление совместимости MDN для Function.prototype.bind().

4 голосов
/ 02 февраля 2012

Сохраните значение 'this' в области видимости конструктора при закрытии обработчика onresize.

var _this = this;
window.onresize = function () {
    _this.resize();
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...