Как в js объект создаётся без класса?

В JavaScript объекты можно создавать без явного использования классов, которые являются частью классической объектно-ориентированной парадигмы. Вместо этого, в JavaScript применяется концепция прототипного наследования.

Прототипное наследование в JavaScript работает таким образом, что каждый объект имеет свойство prototype, которое ссылается на другой объект. Этот объект-прототип может иметь свои собственные свойства и методы, которые будут доступны для всех объектов, созданных с использованием этого прототипа.

Простейший способ создать объект без класса в JavaScript - использовать литералы объектов ({}). Литерал объекта позволяет определить набор свойств и значений прямо в коде. Например:

let person = {
  name: 'John',
  age: 30,
  sayHello: function() {
    console.log('Hello!');
  }
};

console.log(person.name); // Выводит 'John'
person.sayHello(); // Выводит 'Hello!'

В этом примере мы создали объект person, который имеет два свойства name и age, а также метод sayHello(). Обращение к свойству объекта осуществляется через точку ..

При создании нового объекта без класса, можно также использовать функции-конструкторы. Функция-конструктор - это обычная функция, которая вызывается с использованием оператора new. Внутри функции-конструктора можно определить свойства и методы объекта, используя специальное ключевое слово this. Например:

function Person(name, age) {
  this.name = name;
  this.age = age;
  this.sayHello = function() {
    console.log('Hello!');
  };
}

let person = new Person('John', 30);

console.log(person.name); // Выводит 'John'
person.sayHello(); // Выводит 'Hello!'

Когда функция-конструктор вызывается с помощью оператора new, создается новый объект, связанный с этой функцией. С помощью ключевого слова this мы можем устанавливать значения свойств объекта.

Еще одним способом создания объекта без класса в JavaScript является использование метода Object.create(). Этот метод принимает в качестве аргумента объект-прототип и возвращает новый объект, связанный с этим прототипом. Например:

let personPrototype = {
  sayHello: function() {
    console.log('Hello!');
  }
};

let person = Object.create(personPrototype);
person.name = 'John';
person.age = 30;

console.log(person.name); // Выводит 'John'
person.sayHello(); // Выводит 'Hello!'

В этом примере мы создали объект-прототип personPrototype, у которого есть метод sayHello(). Затем мы создали объект person, связанный с этим прототипом, и добавили ему свойства name и age.

Таким образом, в JavaScript объекты могут быть созданы без явного использования классов, позволяя разработчикам использовать прототипное наследование и литералы объектов, функции-конструкторы или метод Object.create(), в зависимости от своих потребностей.