Взаимодействие между объектами класса 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

→ Ссылка