Este artigo descreve os métodos de implementação de classes e instâncias no JavaScript. Compartilhe para sua referência. Os detalhes são os seguintes:
Não existe um conceito de classe pai, classe infantil ou classe ou instância em JavaScript. Tudo depende da cadeia de protótipo para obter herança. Ao procurar as propriedades de um objeto, o JavaScript atravessa a cadeia de protótipo para cima até que as propriedades correspondentes sejam encontradas. Existem vários métodos que podem fazer com que o JavaScript simule os conceitos de classe e instância.
1. Use o construtor diretamente para criar um objeto e use isso para se referir à instância do objeto dentro do construtor.
Copie o código da seguinte forma: function animal () {
this.name = "animal";
}
Animal.prototype.makesound = function () {
console.log ("Animal Sound");
}
[Função]
var animal1 = novo animal ();
Animal1.name;
'animal'
animal1.makesound ();
som animal
Vejamos outro exemplo:
Copie o código da seguinte forma: Ponto de função (x, y) {
this.x = x;
this.y = y;
}
Point.prototype = {
Método1: function () {console.log ("Method1"); },
Method2: function () {console.log ("Method2"); },
}
{Method1: [function], Method2: [function]}
var point1 = novo ponto (10, 20);
Point1.Method1 ();
Método1
Point1.Method2 ();
Method2
Como acima, primeiro especifique o atributo protótipo de um objeto construtor. Então, nova instância do objeto, você pode chamar o método especificado no protótipo.
2. Use o método Object.Create () para criar um objeto
Copie o código da seguinte forma: var animal = {
Nome: "Animal",
makeound: function () {console.log ("Animal Sound"); },
}
var animal2 = object.create (animal);
Animal2.Nome;
'animal'
console.log (animal2.name);
animal
animal2.Makesound ();
som animal
Esse método é mais simples que o método do construtor, mas não pode implementar atributos privados e métodos privados, e os dados não podem ser compartilhados entre objetos de instância; portanto, a simulação de classe ainda não é abrangente o suficiente.
3. Abordagem minimalista proposta pelo programador holandês Gabor de Mooij. Uso recomendado.
Copie o código da seguinte forma: var animal = {
init: function () {
var animal = {};
animal.name = "animal";
animal.makesound = function () {console.log ("Animal Sound"); };
animal de retorno;
}
};
var animal3 = animal.init ();
Animal3.Nome;
'animal'
Animal3.Makesound ();
som animal
Sem usar o protótipo e isso, você só precisa personalizar um init de construtor. A implementação herdada também é muito simples.
Copie o código da seguinte forma: var cat = {
init: function () {
var cat = animal.init ();
Cat.Name2 = "Cat";
cat.makesound = function () {console.log ("som de gato"); };
cat.sleep = function () {console.log ("sono de gato"); };
gato de retorno;
}
}
var cat = cat.init ();
cat.name; // 'animal'
cat.name2; // 'gato'
Cat.makesound (); // semelhante à sobrecarga de método
som de gato
cat.sleep ();
sono de gato
Uso de propriedades privadas e métodos privados:
Copie o código da seguinte forma: var animal = {
init: function () {
var animal = {};
var Sound = "Sound Animal Privado"; // Atributos privados
animal.makesound = function () {console.log (som); };
animal de retorno;
}
};
var animal4 = animal.init ();
Animal.Sound; // Atributos privados indefinidos só podem ser lidos pelos próprios métodos do objeto.
Animal.Sound; // Atributos privados indefinidos só podem ser lidos pelo método do próprio objeto.
Animal4.Makesound ();
som animal privado
Enquanto as propriedades e métodos não definidos em objetos animais forem privados, eles não podem ser acessados pelo mundo exterior.
O compartilhamento de dados pode ser alcançado entre classes e instâncias.
Copie o código da seguinte forma: var animal = {
Som: "Common Animal Sound",
init: function () {
var animal = {};
Animal.CommonsOnd = function () {Console.log (Animal.Sound); };
Animal.Changesound = function () {Animal.Sound = "Common Animal Sound alterado"; };
animal de retorno;
}
}
var animal5 = animal.init ();
var animal6 = animal.init ();
Animal.Sound; // pode ser considerado um atributo de classe
'som animal comum'
Animal5.Sound; // O objeto de instância não pode acessar atributos da classe
indefinido
Animal6.Sound;
indefinido
animal5.Commonsom ();
som animal comum
animal6.Commonsom ();
som animal comum
Animal5.Changesound (); // Modificar propriedades da classe
indefinido
Animal.Sound;
'som animal comum'
animal5.Commonsom ();
som animal comum
animal6.Commonsom ();
som animal comum
Por exemplo, Animal.Sound são os atributos compartilhados de classes e instâncias, que podem ser considerados como atributos de classe e métodos de classe.
Se uma instância alterar o atributo comum, os atributos comuns da classe e outras instâncias também serão modificados de acordo.
Em resumo, é o conceito e o uso de classe e instância simulados em JavaScript.
Espero que este artigo seja útil para a programação JavaScript de todos.