LINUX.ORG.RU

Создает объект операция new, а конструктор отрабатывает в ходе создания

stevejobs ★★★★☆
()
Ответ на: комментарий от cocucka

java как пример. Хотя вопрос в общем задан.

К примеру в JS, здесь конструктор User не просто инициализирует атрибуты, но и создает объект?

function User(name) {
  this.name = name;
  this.isAdmin = false;
}

let user = new User("Вася");
KRex
() автор топика

Тебе Олег уже выше написал: new выделяет память и вызывает конструктор. Что ты делаешь в конструкторе — решать тебе. Обязательно только инициализировать final поля и вызывать конструктор супер-класса, если он переопределен. Это в яве, как в яваскрипте я хз, но, думаю, что также.

Еще есть блок инициализации: {}, который тоже вызвается при создании класса, перед вызовом конструктора.

cocucka ★★★★☆
()

Создаёт объект виртуальная машина.

Legioner ★★★★★
()

Зависит от того, как ты понимаешь слова «создаёт» и «объект». А вообще, угадай, почему конструктор так называется.

no-such-file ★★★★★
()

Да, что смущает?

anonymous
()

Конструктор вызывается при создании объекта класса оператором new.

FilosofeM ★★
()

К примеру в JS, здесь конструктор User не просто инициализирует атрибуты, но и создает объект?

Здесь создаётся пустой объект оператором new — тот самый this. Затем ты наполняешь его значениями в конструкторе. Правда в JS ты ещё в конструкторе можешь сам создать и вернуть объект или подсунуть другой конструктор.

static_lab ★★★★★
()

В JS сейчас круче можно:

class User {
  #name = null
  #age = null
  constructor(name, age) {
    this.name = name
    this.age = age
  }
  set name(name) {
    this.#name = name.slice(0, 1).toUpperCase() + name.slice(1)
  }
  get name() {
    return this.#name
  }
  set age(age) {
    this.#age = Number(age)
  }
  get age() {
    return this.#age
  }
}

new User('vanya', 'petuh')
// User {#name: "Vanya", #age: NaN}
tz4678 ★★
()

Нет. Конструктор это по сути обычный метод. Правда который мы можем вызвать только при создание объекта либо в другом конструкторе. Объект создается с помощью оператора new .

tyamur ★★
()

Нет. Конструктора в общем случае может и не быть вовсе.

r_asian ★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.