O ECMAScript6 já suporta classe, mas nenhuma das versões anteriores suporta classes, mas alguns métodos podem ser usados para simular classes.
As aulas em JS são pontos -chave e pontos difíceis e geralmente parecem ambíguos.
Primeiro, gostaria de enfatizar três pontos de conhecimento muito importantes em JS: este, protótipo e construtor.
Vamos resumir os métodos para definir as classes (simulação):
1. Modelo de fábrica
função createObject (nome, idade) {var obj = new Object (); obj.name = nome; obj.age = idade; obj.getName = function () {return this.name; }; obj.getage = function () {return this.age; } retornar obj;} var obj2 = createObject ("wang wu", 19); console.log (obj2.getName ()); console.log (obj2.getage ()); console.log (obj2.construtor);O método do modo de fábrica cria um objeto. O modo de fábrica pode criar um objeto que contém as informações necessárias com base nos parâmetros aceitos. Esse método pode ser chamado de infinitamente muitas vezes, e cada vez que retorna um objeto contendo 2 atributos e 2 métodos. O padrão de fábrica resolve o problema de criar objetos semelhantes, mas não resolve o problema do reconhecimento de objetos, ou seja, a categoria de um objeto não pode ser determinada e unificada em um objeto.
2. Método construtor
função pessoa (nome, idade, trabalho) {this.name = name; this.age = idade; this.job = job;} pessoa.prototype = {construtor: pessoa, getName: function () {return this.name; }, getage: function () {return this.age; }, getJob: function () {return this.job; }} var p = nova pessoa ("ermazi", 18, "trabalhador"); console.log (p.constructor); console.log (p.getName ()); console.log (p.getage ()); console.log (p.getJob ());Embora o método de construtor determine o problema de propriedade do objeto e possa determinar o tipo de objeto, os métodos no construtor precisam ser recriados em cada objeto, resultando em alguns problemas de desempenho.
3. Modo de protótipo
function Person () {} Person.prototype = {construtor: pessoa, nome: "zhang san", idade: 21, trabalho: "professor", 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 siA partir do código da instância, podemos saber que uma instância do objeto pode acessar o valor no protótipo, mas não pode reescrever o valor no protótipo. Se um atributo duplicado com o protótipo for definido na instância do objeto, o atributo bloqueará o atributo no protótipo, mas não será reescrito.
4. Embalagem (vamos chamar assim por enquanto)
var Dog = {CreateDog: function () {var Dog = {}; Dog.Name = "Wangwang"; Dog.Sayhello = function () {Console.log ("Hello World!"); }; cachorro de volta; }}; var Dog = Dog.createg (); Dog.Sayhello ();É para encapsular todo o código e retornar o objeto de instância como um todo, o que é um pouco semelhante ao padrão de fábrica.
Os vários métodos acima (recomendados) das classes de definição de JS são todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.