Создание объекта с помощью класса в js и вызов методов

Вопрос из любопытства к знатокам javascript

Пусть есть простой класс

class User {
    constructor(name) {
        this.name = name;
    }

    getName() {
        return this.name;
    }

    changeName(name) {
        this.name = name;
    }
}

И допустим, что мне нужно создать экземпляр класса User и сразу вызвать метод (понятно что так делать плохо, и лучше сначала поместить объект в переменную, а потом вызывать методы)

  1. Есть ли какие-нибудь различия между вызовами

    var user = new User('Tom').getName();
    

    и

    var user = (new User('Tom')).getName();
    
  2. Почему следующий вызов вернет undefined в user?

    var user = (new User('Tom')).changeName('Sam');
    

Ответы (1 шт):

Автор решения: Igor
  1. Нет.

class User {
  constructor(name) {
    this.name = name;
  }

  getName() {
    return this.name;
  }

  changeName(name) {
    this.name = name;
  }
}

var user;
(user = new User('Tom')).changeName('Sam');
console.log(user);

или

  changeName(name) {
    this.name = name;
    return this;
  }
→ Ссылка