Мы знаем, что в JS нет концепции класса. Все объекты экземпляра класса наследуют атрибуты из одного и того же объекта прототипа, поэтому объект прототипа является ядром класса.
Класс - это абстракция объекта, а объект - это конкретный экземпляр класса. Занятия абстрактны и не занимают память, в то время как объекты являются конкретными и занимают место для хранения. --- Энциклопедия Байду
Ранние требования к JavaScript были очень простыми, в основном написаны как функции, за которыми следовали процесс, ориентированные на процесс. Позже, объектно-ориентированные идеи развития были постепенно введены, а затем они были медленно записаны в классы.
В JS суть письма в класс - это в основном конструктор + прототип. Ниже давайте обсудим несколько способов написать класс JS:
Метод конструктора
/*** Класс человека: Определите человека, с атрибутом имени и методом getName*/<Script> function Person (name) {this.name = name; this.getName = function () {return this.name; }} // мы создаем несколько объектов здесь var p1 = новый человек ("trigkit4"); var p2 = новый человек ("mike"); console.log (p1 ancessionof person); // true console.log (p2 ancessionof person); // true </script>Из приведенного выше вывода консоли мы видим, что P1 и P2 действительно являются объектами экземпляра человека. На левой стороне экземпляра оператора находится объект класса, который должен быть обнаружен, а на правой стороне находится конструктор класса, который определяет класс. Здесь экземпляр используется для определения того, принадлежит ли объект P1 к классу человека.
Преимущество этого метода заключается в том, что мы можем построить различные экземпляры объектов в соответствии с параметрами. Недостатком является то, что каждый раз, когда мы строим объект экземпляра, будет создан метод getName, что приведет к отходам памяти.
Мы можем использовать внешнюю функцию вместо методов класса, чтобы каждый объект использовал один и тот же метод. Переписанный класс выглядит следующим образом:
// внешняя функция <script> function getName () {return this.name; } function person (name) {this.name = name; this.getName = getName; //} </script>Прототип метод
<script> function person () {}; Person.prototype.name = "trigkit4"; // Свойства класса помещаются на прототип Person.prototype.getName = function () {return "i" + this.name; } var p1 = new Person (); var p2 = новый человек (); console.log (p1.name); // trigkit4 console.log (p2.getname ()); // i i i be trigkit4 </script>Недостатком метода прототипа является то, что экземпляр объекта не может быть построен с помощью параметров (как правило, свойства каждого объекта различны). Преимущество состоит в том, что все экземпляры объекта разделяют метод GetName (по сравнению с методом конструктора), и нет отходов памяти.
Конструктор + прототип
Возьмите преимущества первых двух:
а Используйте конструктор для определения атрибутов класса (поля).
беременный Используйте прототип, чтобы определить метод класса.
<script> function person (name) {this.name = name; } // Функция прототипа позволяет экземплярам объектов делиться методом getName. } </script>Таким образом, мы можем построить объекты с разными атрибутами и позволить экземплярам объектов делиться методами, не вызывая отходы памяти.
Чтобы сделать код JS более компактным, мы переместили код метода прототипа в скобки функции.
<script> function person (name) {this.name = name; Person.prototype.getName = function () {return name; // this.name не подходит}} var p1 = new Person ('trigkit4'); console.log (p1.getName ()); // trigkit4 </script>Здесь нам нужно знать несколько методов определения классов, в дополнение к вышеуказанному конструктору, есть также:
Object.create () Метод
С помощью этого метода «класс» является объектом, а не функцией.
var person = {name: "trigkit4", возраст: 21, run: function () {alert ("мне нравится бежать"); }}Затем используйте object.create () непосредственно для генерации экземпляра без использования нового.
var p1 = object.create (человек); Alert (p1.age); // 21 p1.run (); // Мне нравится бегать
Этот метод проще, чем «метод конструктора», но он не может реализовать частные атрибуты и частные методы, и данные не могут быть переданы между объектами экземпляра, поэтому моделирование «классов» недостаточно всеобъемлющее.
Метод CreateNew ()
Этот метод не требует этого и прототипа. Он должен использовать объекты для моделирования класса, затем определить конструктор CreateNew () в классе, а затем определить объект экземпляра в CreateNew () и использовать этот объект экземпляра в качестве возвращаемого значения.
<script> var person = {createNew: function () {var person = {}; person.name = "trigkit4"; person.run = function () {alert ("мне нравится работать"); }; возвращающийся человек; }} </script>При использовании метода CreateNew (), чтобы получить объект экземпляра.
var p1 = person.createnew (); p1.run (); // Мне нравится бегать
Этот метод написания на самом деле очень похож на метод написания объектных литералов, за исключением того, что один разделен запятой, а другой разделен с помощью полуколона.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.