Обучаюсь по книжке Js for Kids (12 глава). В упражнении нужно сделать машинку, которая "едет" по экрану. Никак не могу понять, почему закомментированная строка не работает? Сама книга этот момент не освящает, а гугл только еще больше запутал.
let Car = function (x, y) {
this.x = x;
this.y = y;
};
Car.prototype.draw = function () {
let carHtml = '<img src="images/car.png">';
this.carElement = $(carHtml);
this.carElement.css({
position: "absolute",
left: this.x,
top: this.y
});
$("body").append(this.carElement);
};
Car.prototype.moveRight = function () {
this.x += 5;
this.carElement.css({
left: this.x,
top: this.y
});
};
let nissan = new Car(100, 200);
nissan.draw();
// nissanMoveTimer = setInterval(nissan.moveRight, 1000); // Cannot read property 'css' of undefined
nissanMoveTimer = setInterval(function () { nissan.moveRight(); }, 1000); // Рабочий код
setTimeout(function () { clearInterval(nissanMoveTimer);}, 5000);
setInterval(function () { nissan.moveRight(); }, 1000); // Создать функцию, разово выполняющую код внутри метода moveRight и вызывать её каждую секунду.
Смысл одинаковый, второй вариант даже кажется избыточным, однако работает только он. С последней строкой, где clearInTerval, ситуация такая же - работает, только если расписать function () {func}; в первом аргументе.
– Дмитрий Oct 16 '20 at 18:33setInterval(nissan.moveRight.bind(nissan), 1000)– vp_arth Oct 16 '20 at 19:25