Конструктор объекта
Всем привет! Изучаю JavaScript и столкнулся с недопониманием темы.
Нужно что бы метод plus объекта Vektor вернул сумму двух объектов новым объектом Vektor. Почему через функцию set ошибка не выводится. А если просто объявить конструктор, то выводится. Подскажите пожалуйста. (function() { class Vektor { constructor(x, y){ this.x = x; this.y = y; } set(value1, value2) { return new Vektor(value1, value2);// Ошибки нет } plus(Vektor){ /*let newVektor = new Vektor(Vektor.x, Vektor.y); //Ошибка Vektor не конструктор.*/ let a = this.x + Vektor.x; let b = this.y + Vektor.y; Vektor = Vektor.set(a, b);//При использовании сеттера return Vektor; } } console.log(new Vektor(1, 2).plus(new Vecktor(2, 3))); |
Цитата:
(function() { class Vektor { constructor(x, y){ this.x = x; this.y = y; } set(value1, value2) { return new Vektor(value1, value2);// Ошибки нет } plus(Vektor){ /*let newVektor = new Vektor(Vektor.x, Vektor.y); //Ошибка Vektor не конструктор.*/ let a = this.x + Vektor.x; let b = this.y + Vektor.y; Vektor = Vektor.set(a, b);//При использовании сеттера return Vektor; } } console.log(new Vektor(1, 2).plus(new Vektor(2, 3))); |
Ваше решение лучше. Но вопрос был в другом, почему же в одном случае, когда использую сеттер консоль не ругается, а во втором случае, когда записываю конструктор в методе плюс, он у меня закоментированный, консоль ругается , что это не конструктор. Как бы мне это понять ?
(function() { class Vektor { constructor(x, y){ this.x = x; this.y = y; } [COLOR="Yellow"]set(value1, value2) { return new Vektor(value1, value2);// Ошибки нет[/COLOR] } plus(Vektor){ [COLOR="Yellow"]/*let newVektor = new Vektor(Vektor.x, Vektor.y); //Ошибка Vektor не конструктор.*/[/COLOR] let a = this.x + Vektor.x; let b = this.y + Vektor.y; Vektor = Vektor.set(a, b);//При использовании сеттера return Vektor; } } console.log(new Vektor(1, 2).plus(new Vektor(2, 3))); |
Цитата:
|
Огромнейшее спасибо!
|
Часовой пояс GMT +3, время: 13:39. |