Конструктор объекта
Всем привет! Изучаю 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:40. |