Ecmascript6 уже поддерживает класс, но ни одна из предыдущих классов версий не поддерживает, но некоторые методы могут использоваться для имитации классов.
Занятия в JS являются ключевыми моментами и трудными моментами, и часто чувствуют себя неоднозначными.
Во -первых, я хотел бы подчеркнуть три очень важных точек знаний в JS: это, прототип и конструктор.
Давайте суммируем методы для определения (моделирования) классов:
1. Заводская модель
function createObject (name, age) {var obj = new Object (); obj.name = name; obj.age = возраст; obj.getName = function () {return this.name; }; obj.getage = function () {return this.age; } return obj;} var obj2 = createObject ("wang wu", 19); console.log (obj2.getName ()); console.log (obj2.getage ()); console.log (obj2.constructor);Метод заводского режима создает объект. Фабричный режим может создать объект, содержащий необходимую информацию, основанную на принятых параметрах. Этот метод может быть называться бесконечно много раз, и каждый раз он возвращает объект, содержащий 2 атрибута и 2 метода. Заводской шаблон решает проблему создания аналогичных объектов, но не решает проблему распознавания объектов, то есть категория объекта не может быть определена и объединена в объект.
2. Метод конструктора
Функция человека (имя, возраст, задание) {this.name = name; this.age = возраст; this.job = job;} person.prototype = {constructor: person, getName: function () {return this.name; }, getage: function () {return this.age; }, getJob: function () {return this.job; }} var p = new Person ("ermazi", 18, "Worker"); console.log (p.constructor); console.log (p.getname ()); console.log (p.getage ()); console.log (p.getjob ());Хотя метод конструктора определяет проблему собственности объекта и может определить тип объекта, методы в конструкторе должны быть воссозданы в каждом объекте, что приводит к некоторым проблемам производительности.
3. Прототип режим
function person () {} person.prototype = {Constructor: Person, имя: "Zhang San", возраст: 21, задание: "Учитель", getName: function () {return this.name; }, getJob: function () {return this.job; }} var p = new Person (); console.log (p.getName ()); // zhang san console.log (p.getjob ()); // teachervar p2 = new Person (); p2.name = "li si"; console.log (p2.getName ()); // li siИз кода экземпляра мы можем знать, что экземпляр объекта может получить доступ к значению в прототипе, но не может переписать значение в прототипе. Если атрибут, который дублируется с помощью прототипа, определен в экземпляре объекта, то атрибут будет блокировать атрибут в прототипе, но не будет переписать.
4. Упаковка (давайте назовем это на данный момент)
var dog = {cenectog: function () {var dog = {}; dog.name = "wangwang"; dog.sayhello = function () {console.log ("Привет, мир!"); }; возвращение собаки; }}; var dog = dog.createdog (); Dog.sayhello ();Это должно инкапсулировать весь код и вернуть объект экземпляра в целом, что немного похоже на заводской шаблон.
Приведенные выше несколько методов (рекомендуется) классов определения JS - это все контент, которым я делюсь с вами. Я надеюсь, что вы можете дать вам ссылку, и я надеюсь, что вы сможете поддержать Wulin.com больше.