Взаимодействие между объектами класса JavaScript
При написании проектной работы столкнулся с проблемой взаимодействия объектов одного класса. Допустим, у нас есть класс и два объекта этого класса:
class user {
contructor(age) {
this.age = age;
}
method(){}
}
const user1 = new user(20);
const user2 - new user(30);
Как в методе method сравнить возраст user1 и user2?
Ответы (1 шт):
Автор решения: novvember
→ Ссылка
Можно сделать метод сравнения статичным методом класса, раз он не привязан к конкретном пользователю, а потом вызывать его с пользователями как аргументами.
class User {
constructor(age) {
this.age = age;
}
static compare(user1, user2){
return user1.age === user2.age;
}
}
const user1 = new User(20);
const user2 = new User(30);
const user3 = new User(20);
console.log( User.compare(user1, user2) ); // false
console.log( User.compare(user1, user3) ); // true
Но можно, как предлагают в комментариях, сделать и нестатичный метод: тогда он будет у экземпляра и будет к нему привязан (например, можно сравнивать текущего пользователя с другим):
class User {
constructor(age) {
this.age = age;
}
compareWith(anotherUser){
return this.age === anotherUser.age;
}
}
const user1 = new User(20);
const user2 = new User(30);
const user3 = new User(20);
console.log( user1.compareWith(user2) ); // false
console.log( user1.compareWith(user3) ); // true