Понимание объектов в javascript. — Часть 1

Когда дело доходит до программирования на JavaScript, важно понимать важность объектов и модели-прототипа. JavaScript — это объектно-ориентированный язык, построенный на основе модели-прототипа. В JavaScript каждый объект наследует свойства своего прототипа, если таковые имеются. Прототип — это просто объект, от которого другой объект наследует свойства. Для создания сложных программ с использованием JavaScript необходимо уметь работать с прототипами — они составляют ядро ​​ООП в языке.

Прототип ресурса

Свойство proto — это специальное свойство, указывающее на прототип объекта. Другими словами, это способ доступа к свойствам прототипа объекта. Свойство proto унаследовано от Object.prototype, прототипа по умолчанию для всех объектов JavaScript.

const person = {
  name: 'John',
  age: 30
}

console.log(person.__proto__); // Object.prototype

В этом примере мы создаем объект человека со свойствами имени и возраста. Когда мы печатаем person.__proto__, мы получаем Object.prototype, который является прототипом по умолчанию для всех объектов в JavaScript. Это происходит потому, что человек был создан с использованием литеральной нотации объекта, которая автоматически устанавливает прототип как Object.prototype.

Наследование с ключевым словом «прототип»

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

function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.save = function() {
  console.log('Saving person: ' + this.name);
}

const person1 = new Person('John', 30);
const person2 = new Person('Maria', 25);

person1.save(); // Saving person: John
person2.save(); // Saving person: Maria

В этом примере мы создаем функцию-конструктор Person, которая принимает имя и возраст. Затем мы добавляем метод сохранения к объекту-прототипу Person. Наконец, мы создаем два экземпляра функции-конструктора Person, person1 и person2, и вызываем метод сохранения для каждого из них.

Объект.создать()

Метод Object.create() — это более продвинутый способ создания объектов в JavaScript, поскольку он позволяет создавать новый объект с заданным прототипом. Используя Object.create(), вы можете создать новый объект, который наследует свойства существующего объекта, делая процесс создания объекта более эффективным и менее подверженным ошибкам.

Чтобы создать новый объект с помощью Object.create(), вам нужно передать объект, который будет использоваться в качестве прототипа для нового объекта, в качестве первого аргумента метода. Второй аргумент является необязательным и позволяет определить свойства нового объекта.

См. пример ниже:

const personPrototype = {
  greeting() {
  console.log(Hello, my name is ${this.name});
  }
};

const john = Object.create(personPrototype, {
  name: {
    value: 'John'
  }
});

john.greeting(); // Output: Hello, my name is John

В приведенном выше примере мы создаем объект personPrototype с помощью метода Greeting(). Затем мы используем Object.create() для создания нового объекта с именем john, который наследует свойства объекта personPrototype. Мы также определяем свойство name для нового объекта, используя второй аргумент Object.create().

Доступ к методу Greeting() осуществляется через свойство proto объекта john, которое ссылается на объект personPrototype.

Использование Object.create() может быть мощным способом создания объектов в JavaScript, поскольку позволяет создавать новые объекты, которые наследуют свойства и методы существующих объектов.

Заключение

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

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