No artigo anterior, objetos e protótipos no JavaScript (i) mencionaram algumas operações básicas na criação de objetos em JavaScript e continuarão a discuti -los a seguir.
Um modelo de fábrica
Sabemos que, para criar um objeto, podemos usar o seguinte código:
var user = new Object (); // Crie um objeto usando o novo operador usuário.name = 'recitado no lago Triangle'; // Adicione atributos ao objeto user.age = 22; user.address = 'hubei wuhan'; alert (user.name + "" + user.age); // retornar 'recitado no triângulo Lake' Hubei Wuhan '
Criar objetos dessa maneira é simples e intuitivo, e também é o método mais básico de criar objetos no JavaScript. Mas há um problema como esse, se precisarmos criar vários objetos, tenho que escrever muito código duplicado. Por exemplo, se queremos criar outro usuário do objeto1, precisamos reescrever o código acima novamente, o que é inadequado no processo de desenvolvimento real. Dessa forma, se houver muitos objetos, a quantidade de código aumentará bastante.
Para resolver esse problema, podemos usar um método chamado padrão de fábrica, que é resolver o problema de instanciar objetos que produzem uma grande quantidade de código duplicado.
função create (nome, idade) {var obj = new Object (); obj.name = nome; obj.age = idade; obj.run = function () {return this.name + '' + this.age; }; retornar obj;} var obj1 = create ('zxc', 10); // a primeira instância var obj2 = create ('cxz', 20); // o segundo alerta de instância (obj1.run ()); alerta (obj1.run ());A partir do código acima, podemos ver que o padrão de fábrica resolve o problema da duplicação de código em larga escala durante a instanciação, mas surge outro problema, ou seja, identificando o problema, não podemos descobrir qual objeto eles são. por exemplo
alerta (tipo de obj1); // objectalert (object of object of object); //verdadeiro
O código acima indica que o Box1 é um objeto, mas não podemos saber qual objeto foi criado.
Dois construtores (método de construção)
Para resolver o problema acima, podemos usar construtores para criar objetos. A única diferença entre um construtor e uma função normal é que o método de chamada é diferente. No entanto, o construtor também é uma função.
função user (nome, idade) {// modo construtor this.name = name; this.age = idade; this.run = function () {return this.name + '' + this.age; };}Basta usar o novo operador ao criar um objeto:
var user1 = novo usuário ('zxc', 25); var user2 = novo usuário ('cxz', 22);Agora podemos detectar se o usuário1 ou o usuário2 pertence ao usuário.
alert (user1 instanceof user); // true
Pode -se observar que o uso do método construtor resolve o problema da instanciação repetida e também resolve o problema do reconhecimento de objetos.
O processo de execução ao usar um construtor é o seguinte:
1. Ao executar o novo construtor (), o plano de fundo executa novo objeto ();
2. Escopo o construtor do novo objeto.
3. Execute o código dentro do construtor;
4. O plano de fundo retorna diretamente o novo objeto.
Em seguida, vamos dar uma olhada nos problemas de função dentro do construtor. Se executarmos a seguinte declaração:
alert (user1.run == user2.run); // o resultado retorna false
O resultado retorna false, o que significa que o método é realmente um endereço de referência. Se criarmos vários objetos repetidamente, os métodos em cada objeto abrirão novo espaço na memória, o que desperdiçará mais espaço. Para resolver esse problema, precisamos usar o compartilhamento de propriedades ou métodos de instância. Continuaremos a discutir a resolução desse problema no próximo artigo.
O exposto acima são os objetos e protótipos no JavaScript introduzidos a você pelo editor (II). Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!