Существует известный принцип повторного использования кода, который был предложен GOF: приоритет используется для использования комбинаций объектов, а не наследования класса. В JavaScript нет концепции классов, поэтому повторное использование кода не ограничивается наследством класса. Есть много способов создания объектов в JavaScript, включая конструкторы, вы можете использовать новые для создания объектов, и вы можете динамически изменять объекты. Существует также много методов повторного использования не классифицированного наследования (которое можно назвать современным режимом наследования) в JavaScript, таких как объединение других объектов в необходимые объекты, технология смешивания объектов, заимствование и повторное использование необходимых методов.
Классический режим режима режима наследования
Примеры двух конструкторов родителей и ребенка:
Кода -копия выглядит следующим образом:
Функция Parent (имя) {
this.name = name || "Adam";
}
Parent.prototype.say = {
вернуть это. name;
};
Функция Child (имя) {
}
наследовать (ребенок, родитель);
Ниже приведен метод реализации функции повторного использования ():
Кода -копия выглядит следующим образом:
Функция наследуя (C, P) {
C.prototype = new P ();
}
Здесь свойство прототипа должно указывать на объект, а не на функцию, поэтому оно должно указывать на экземпляр, созданный родительским конструктором, а не на сам конструктор.
После этого, при создании дочернего объекта, он получит свои функции от родительского экземпляра через прототип:
Кода -копия выглядит следующим образом:
var Kid = new Child ();
Kid.say (); // "Адам"
Позвоните в наследственную цепочку прототипа:
Далее добавить свойства ребенка:
Кода -копия выглядит следующим образом:
var Kid = new Child ();
Kid.name = "Патрик";
Kid.say (); // "Патрик"
Изменения в цепочке прототипа:
Вы можете найти имя в свойствах вашего объекта, чтобы вам больше не нужно искать цепочку прототипа.
Одним из недостатков использования приведенной выше шаблона является то, что он наследует свойства двух объектов одновременно, а именно свойства, добавленные к этому и свойства прототипа. Большую часть времени эти атрибуты себя не нужны.
Другим недостатком является то, что использование inehrit () inherit () наследство не поддерживает параметры передачи субконктора, например:
Кода -копия выглядит следующим образом:
var s = новый ребенок ("seth");
s.say (); // "Адам"
Этот результат не ожидается. Хотя дочерний конструктор может передать параметры в родительский конструктор, этот механизм наследования должен быть повторно выполнен каждый раз, когда необходим дочерний объект, и он неэффективен, поскольку родительский объект в конечном итоге будет воссоздан.
Эта статья заканчивается здесь. Мы будем продолжать обновлять оставшиеся режимы режима повторного использования кода JavaScript в будущем.