*Эта серия статей не знакомит с основными идеями объектно-ориентированного программирования (ООП). Для более подробного ознакомления с ООП см. W3school или другие ресурсы.

В этой статье показано, как создать структуру классов и объектов в JavaScript.

1.1 Что такое объект?

Объект представляет собой структуру с ключом и значением. Примитивное значение и специальные объекты (такие как массив и функция) могут быть помещены в сам объект.

Вы можете создать такой объект:

NewObject = {
    one: undefined,
    two: null,
    three: ture,
    four: "String",
    five: 3.14159,
    six: {obj: "Object"},
    seven: function fun(){...},
    eight: [],  //empty array
    nine: /*/,  //regular expression
}

Но в чем разница между сохранением значения в объекте и в функции?

Проведем эксперимент:

JS ООП 1.1.1

В предыдущем коде obj2 не копировал значение obj2, вместо этого он копировал адрес, в котором хранится «значение: 1998».

Механизм называется «передача по ссылке» или «передача по адресу». Вот почему объект не действует как переменная.

При доступе к значению (мы называем его «свойство») мы используем для этого понятие точки:

JS ООП 1.1.2

Имя объекта (obj) представляет собой пространство имен. Это означает, что свойства и методы (функции) действительны только в том случае, если мы вызываем или получаем доступ к объекту. Я помещаю объект внутрь объекта, который создает подпространства имен. Нам все еще нужно получить доступ через объект имени к свойствам внутри.

1.2 Как создать класс с функциями конструктора?

Класс — это объект программирования, который вы можете использовать в качестве прототипа для создания подобных объектов.

Функцию для создания класса мы называем «конструкторами».

JS ООП 1.2.1 класс конструктора в JS

Эта странная функция на самом деле является «классом» JavaScript. Внутри функции мы используем ключевое слово this, чтобы указать на сам конструктор.

Метод «sayhi» вернет последний и первый из объекта имени.

Объект name находится внутри конструктора, поэтому мы используем ключевое слово this, чтобы указать на эти свойства.

Кроме того, ключевое слово «это» не имеет значения. Это просто замена объекта, который мы собираемся создать.

1.3 новое ключевое слово и метод создания

В предыдущем фрагменте мы используем оператор «новый» для создания экземпляра объекта из класса Person:

let person1 = new Person('Bob','Smith');

Объект person1 здесь является экземпляром функции-конструктора или класса.

На самом деле, есть еще один способ сделать это, он называется методом create.

Мы можем использовать таким образом:

let person2 = Object.create(person1);

Это выражение создает экземпляр объекта путем «клонирования» существующего объекта.

Объект person2 также имеет те же свойства, что и person1('Bob','Smith').

JS OOP 1.1.3.js метод создания https://gist.github.com/readwalkerchang/0c713fe22ed295487cb14f6b13dd63bb

1.3 Что такое класс ES6?

Класс ES6 — это новая функция, которую можно использовать для инициации класса (функции конструктора).

Конструктор JS OOP 1.3.1 - класс ES6 в JS

Этот синтаксис является упрощением функции конструктора.

В документе Ecma-262 сказано:

  • Несмотря на то, что ECMAScript включает синтаксис для определений классов, объекты ECMAScript принципиально не основаны на классах, как в C++, Smalltalk или Java.

JavaScript (или формально мы говорим EcmaScript) — это язык, основанный на прототипах.

Эта характеристика отличает его при реализации других функций ООП, таких как наследование и полиморфизм.

Мы обсудим больше в следующих статьях:
Примечание для начинающих: Javascript OOP — наследование