Ниже приведен простой фрагмент кода, который можно использовать для создания ролловеров изображений (взятых из учебника, который я прохожу). Автор говорит: в разделе обработчиков событий присоединения конструктор создает здесь два обработчика событий. Именно в этих обработчиках событий переменная с именем «that» должна использоваться для ссылки на объект Rollover. Это потому, что ключевое слово "this" в обработчиках событий относится к объекту изображения, а не к объекту Rollover.
Мой вопрос: я понимаю, что this.image
относится к объекту изображения, но не хотите ли вы просто установить this.image.src
равным this.newImageURL
? Наверное, я просто не понимаю, зачем нужна that
. И как получается, что изменение свойства src that.image
приводит к изменению свойства src `this.image? '
var $ = function (id) { return document.getElementById(id); }
var Rollover = function ( imageId, newImageURL ) {
var that = this;
this.newImageURL = newImageURL;
this.image = $(imageId);
// Validate node
if ( ! this.image ) {
throw new Error("Rollover: Image ID not found.");
}
if ( this.image.nodeType !== 1 || this.image.nodeName !== "IMG" ) {
throw new Error("Rollover: Image ID is not an img tag.");
}
var newObj = that;
// Copy original image url
this.oldImageURL = this.image.src;
// Attach event handlers
this.image.onmouseover = function () {
that.image.src = that.newImageURL;
}
this.image.onmouseout = function () {
that.image.src = that.oldImageURL;
}
}