mengmeiying
@mengmeiying
¯\_(ツ)_/¯

Как исправить TypeError: this.LongCoordinates is not a function?

Вопрос скорее всего очень лёгкий, но всё равно. Пытаюсь написать слайдер - и координаты круглого элемента не должны вылезать за пределы полоски. Но когда я обращаюсь к функции LongCoordinates, появляется ошибка TypeError: this.LongCoordinates is not a function. Я явно что-то не так делаю, но что, не пойму.

var model = {
            LongCoordinates: function (dir) {
                let long = document.querySelector(".long");
                long.style.left = "8px";
                long.style.right = "274px";

                
                if (dir == "right") return "274px";
                
            },

            ballCoordinates: {
                min: 0,
                max: this.LongCoordinates("right"),
                x: "0px"
            }
            
        };
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
like-a-boss
@like-a-boss
Признайся,тебяТянетНаКодМужика,ты—программный гей
Дело в том, что здесь max: this.LongCoordinates("right"),this ссылается на объект window, поскольку находится внутри объекта(что никак его не переопределяет), а не метода(метод является функцией), а функция переопределяет this. Но у объекта window нет метода LongCoordinates, отсюда и ошибка.

var model = {
		LongCoordinates: function (dir) {
				let long = document.querySelector(".long");
				long.style.left = "8px";
				long.style.right = "274px";

				if (dir == "right") return "274px";

		},

		ballCoordinates: function () {
				return {
					min: 0,
					max: this.LongCoordinates("right"), // теперь this ссылается на model
					x: "0px"
				}
		}

};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы