Tudo no JavaScript é um objeto: string, matriz, valor, função, etc. Não há conceito em JS,
Mas podemos usar as características gramaticais do JS para criar objetos com a idéia de classe.
Método original
Copie o código do código da seguinte forma:
<script type = "text/javascript">
var obj = new Object ();
obj.name = "koji";
obj.age = 21;
obj.showname = function () {// Adicionar método ao objeto
Alerta (this.name);
}
obj.showage = function () {
alerta (this.age);
}
obj.showname ();
obj.shows ();
</script>
O método acima gera um objeto através da nova palavra -chave e, em seguida, adiciona as propriedades e métodos das características da linguagem dinâmica de acordo com o JS.
Criar um objeto. Entre eles, este é um objeto que chama o método.
O problema dessa maneira é que, se você precisar criar um objeto várias vezes, o código precisará ser repetido várias vezes, o que não é propício à reutilização do código.
Método da fábrica
Copie o código do código da seguinte forma:
<script type = "text/javascript">
função createObj () {
var obj = new Object ();
obj.name = "koji";
obj.age = 21;
obj.showname = function () {
Alerta (this.name);
}
obj.showage = function () {
alerta (this.age);
}
Retornar obj; // retornar ao objeto
}
var obj1 = createObj ();
var obj2 = createObj ();
obj1.showName ();
obj2.show ();
</script>
Este método melhora a taxa de reutilização do código e também pode alterar o método da fábrica e passar na atribuição de parâmetros.
Copie o código do código da seguinte forma:
<script type = "text/javascript">
Função createObj (nome, idade) {// Ao construir objetos, o parâmetro de inicialização pode ser passado
var obj = new Object ();
obj.name = nome;
obj.age = idade;
obj.showname = function () {
Alerta (this.name);
}
obj.showage = function () {
alerta (this.age);
}
Retornar obj; // retornar ao objeto
}
var obj1 = createObj ("koji", 22);
var obj2 = createObj ("luo", 21);
obj1.showName ();
obj1.Showage ();
obj2.showname ();
obj2.show ();
</script>
Embora o método acima possa aumentar a taxa de renovação do código, ele tem um ótimo defeito em comparação com o conceito de classe orientada para o objeto. macarrão
A imagem relativa enfatiza a propriedade do objeto e o método do objeto é compartilhado. E o método de fábrica acima para criar o objeto um para o outro
Os objetos criam seus próprios métodos egoístas. Ao mesmo tempo, o mesmo método de criar a mesma lógica para cada objeto é um desperdício de memória. Melhorado da seguinte maneira
Copie o código do código da seguinte forma:
<span style = "font-size: 14px;"> <script type = "text/javascript">
Função createObj (nome, idade) {{
var obj = new Object ();
obj.name = nome;
obj.age = idade;
obj.showname = mostrado nome;
obj.showage = SHOTAGE;
Retornar obj; // retornar ao objeto
}
Função mostradaMaMe () {// a função também é um objeto
Alerta (this.name);
}
function show () {
alerta (this.age);
}
var obj1 = createObj ("koji", 22);
var obj2 = createObj ("luo", 21);
obj1.showName ();
obj1.Showage ();
obj2.showname ();
obj2.show ();
</script> </span>
Os objetos de função mencionada acima são definidos para resolver os problemas privados de diferentes objetos de função de retenção de objetos. Agora todos os objetos são
Mantenha a referência às duas funções acima. Mas, dessa maneira, a função do objeto tornou -se independente e irrelevante para o objeto. Isso e
Métodos específicos para métodos específicos orientados a objetos não atendem aos pensamentos de categorias específicas.
Método da função de construção
Copie o código do código da seguinte forma:
<script type = "text/javascript">
// Defina um construtor para gerar o objeto correspondente.
Função Pessoa (nome, idade) {
// Ao ligar para a nova pessoa, antes de executar a primeira linha de código, uma pessoa é um objeto de pessoa e o objeto está na memória
// A atribuição de índice é fornecida a essa palavra -chave.
This.name = nome; // essas palavras -chave não devem ser menores. Para o objeto atual, isto é, o nome atributo Atribuição do objeto referenciado pela palavra -chave
//, na verdade é equivalente a adicionar a propriedade Name ao objeto atual e atribuir um valor ao atributo de nome.
this.age = idade;
this.showname = function () {// Adicione o método ao objeto atual
Alerta (this.name);
}
this.showage = function () {
alerta (this.age);
}
// retorna o objeto atual para a variável à esquerda do símbolo de atribuição (sem necessidade de usar o retorno)
}
Var obj1 = nova pessoa ("koji", 22);
var obj2 = nova pessoa ("luo", 21);
obj1.showName ();
obj1.Showage ();
obj2.showname ();
obj2.show ();
</script>
O método de construção de uma função é o mesmo que o método da fábrica e criará um objeto de função exclusivo para cada objeto. Claro, você também pode colocar essas funções
O objeto é definido fora do construtor, para que os objetos e métodos sejam independentes um do outro.
Método do protótipo: a propriedade do protótipo do objeto usado por este método
Copie o código do código da seguinte forma:
script type = "text/javascript">
Function pessoa () {} // define uma função confinada do ar e não pode passar os parâmetros
// Dê todos os métodos de todos os atributos ao atributo de protótipo
Pessoa.prototype.name = "koji";
Pessoa.prototype.age = 22;
PERSON.PROTOTYPE.SHOWNAME = function () {// Adicionar método
Alerta (this.name);
}
PERSON.PROTOTYPE.SHOWAGE = function () {
alerta (this.age);
}
var obj1 = nova pessoa ();
var obj2 = new Person ();
obj1.showName ();
obj1.Showage ();
obj2.showname ();
obj2.show ();
</script>
Quando o objeto de pessoa é gerado, os atributos do protótipo são atribuídos ao novo objeto. Em seguida, atributos e métodos são compartilhados.
O problema desse método é que o construtor não pode ser transmitido e cada objeto recém -gerado possui o valor padrão. Segundo, o compartilhamento de métodos não é compartilhado
Qualquer problema, mas o compartilhamento de atributos é um problema, quando o atributo é o objeto que pode alterar o estado.
Copie o código do código da seguinte forma:
<script type = "text/javascript">
Function pessoa () {} // define uma função confinada do ar e não pode passar os parâmetros
Pessoa.prototype.age = 22;
Pessoa.prototype.array = new Array ("koji", "luo");
PERSON.PROTOTYPE.SHOWAGE = function () {
alerta (this.age);
}
Person.prototype.showArray = function () {
Alerta (this.array);
}
var obj1 = nova pessoa ();
var obj2 = new Person ();
obj1.array.push ("kyo");
obj1.showray ();
obj2.showray ();
</script>
Quando o código acima adiciona elementos ao atributo de obj1 ao atributo de obj1, o elemento do atributo Arra de Obj2 também segue
O impacto é que a propriedade da matriz dos objetos Obj1 e Obj2 cita o mesmo objeto de matriz, então altere essa matriz
Objeto, o atributo do objeto da matriz será naturalmente afetado naturalmente
Método de construtor/protótipo misto
Use o construtor para definir os atributos do objeto e use o protótipo para definir objetos, para que o atributo possa ser alcançado
Compartilhamento privado e de método.
Copie o código do código da seguinte forma:
<script type = "text/javascript">
Função Pessoa (nome, idade) {
this.name = nome;
this.age = idade;
this.array = new Array ("koji", "luo");
}
Person.prototype.showname = function () {
Alerta (this.name);
}
Person.prototype.showArray = function () {
Alerta (this.array);
}
Var obj1 = nova pessoa ("koji", 22);
var obj2 = nova pessoa ("luo", 21);
obj1.array.push ("kyo");
obj1.showray ();
obj1.showName ();
obj2.showray ();
obj2.showname ();
</script>
Depois que os atributos são privados, a alteração de seus respectivos atributos não afetará outros objetos. Ao mesmo tempo, o método também é compartilhado por cada objeto. Semanticamente,
Isso atende aos requisitos de programação de objeto de face.
Protótipo dinâmico
Copie o código do código da seguinte forma:
<script type = "text/javascript">
Função Pessoa (nome, idade) {
this.name = nome;
this.age = idade;
this.array = new Array ("koji", "luo");
// Se o _initializado no objeto de pessoa estiver indefinido, indica que ainda não adicionou um método ao protótipo da pessoa
IFOF PERS._Initialized == "Underfined")
{{
Person.prototype.showname = function () {
Alerta (this.name);
}
Person.prototype.showArray = function () {
Alerta (this.array);
}
Pessoa._initialized = true;
}
}
Var obj1 = nova pessoa ("koji", 22);
var obj2 = nova pessoa ("luo", 21);
obj1.array.push ("kyo");
obj1.showray ();
obj1.showName ();
obj2.showray ();
obj2.showname ();
</script>
Este método é semelhante ao construtor/protótipo. Basta colocar o método no construtor, enquanto ao mesmo tempo
Um atributo é adicionado à pessoa da função para garantir que a instrução IF só possa ser executada com sucesso uma vez
Os mais amplamente utilizados em aplicações práticas são o método do construtor/protótipo. O método de protótipo dinâmico também é muito popular, possui funções e estrutura
O método de função/protótipo é equivalente. Não use o método do construtor ou protótipo sozinho.