ECMAScript6 ya es compatible con la clase, pero ninguna de las versiones anteriores admite clases, pero se pueden usar algunos métodos para simular clases.
Las clases en JS son puntos clave y puntos difíciles, y a menudo se sienten ambiguo.
Primero, me gustaría enfatizar tres puntos de conocimiento muy importantes en JS: esto, prototipo y constructor.
Resumamos los métodos para definir (simulación) clases:
1. Modelo de fábrica
función createObject (nombre, edad) {var obj = new Object (); obj.name = nombre; obj.age = edad; 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);El método de modo de fábrica crea un objeto. El modo de fábrica puede crear un objeto que contenga la información necesaria basada en los parámetros aceptados. Este método se puede llamar infinitamente muchas veces, y cada vez que devuelve un objeto que contiene 2 atributos y 2 métodos. El patrón de fábrica resuelve el problema de crear objetos similares, pero no resuelve el problema del reconocimiento de objetos, es decir, la categoría de un objeto no puede determinarse y unificarse en un objeto.
2. Método del constructor
Función persona (nombre, edad, trabajo) {this.name = name; this.age = edad; this.job = Job;} Person.prototype = {constructor: persona, getName: function () {return this.name; }, getage: function () {return this.age; }, getJob: function () {return this.job; }} var p = nueva persona ("ermazi", 18, "trabajador"); console.log (p.constructor); console.log (p.getName ()); console.log (p.getage ()); console.log (p.getJob ());Aunque el método de constructor determina el problema de propiedad del objeto y puede determinar el tipo de objeto, los métodos en el constructor deben recrearse en cada objeto, lo que resulta en algunos problemas de rendimiento.
3. Modo prototipo
function persona () {} persona.prototype = {constructor: persona, nombre: "zhang san", edad: 21, trabajo: "maestro", getName: function () {return this.name; }, getJob: function () {return this.job; }} var p = nueva persona (); console.log (p.getName ()); // zhang San console.log (p.getJob ()); // maestro p2 = new Person (); p2.name = "li si"; console.log (p2.getName ()); // li si siDesde el código de instancia, podemos saber que una instancia de objeto puede acceder al valor en el prototipo, pero no puede reescribir el valor en el prototipo. Si un atributo que se duplica con el prototipo se define en la instancia del objeto, entonces el atributo bloqueará el atributo en el prototipo, pero no se reescribirá.
4. Embalaje (llamémoslo así por ahora)
var dog = {creatingg: function () {var dog = {}; dog.name = "wangwang"; dog.sayhello = function () {console.log ("¡Hola mundo!"); }; perro de regreso; }}; var dog = dog.createDog (); perro.sayhello ();Es para encapsular todo el código y devolver el objeto de instancia en su conjunto, que es un poco similar al patrón de fábrica.
Los varios métodos anteriores (recomendados) de las clases de definición JS son todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.