"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > As razões e vantagens do método do protótipo sendo definido fora do construtor

As razões e vantagens do método do protótipo sendo definido fora do construtor

Postado em 2025-04-19
Navegar:178

Why Should Prototype Methods Be Defined Outside the Constructor Function?

atribuindo métodos de protótipo dentro da função do construtor: Potenciais armadilhas

estilisticamente, alguns preferem a seguinte estrutura para definir o protótipo Métodos:

this.category = categoria; this.value = value; // Produto é um objeto JSON Filtro.prototype.checkproduct = function (produto) { // Execute alguns cheques retornar is_match; } };
var Filter = function( category, value ){
  this.category = category;
  this.value = value;

  // product is a JSON object
  Filter.prototype.checkProduct = function( product ){
    // run some checks
    return is_match;
  }
};
No entanto, essa abordagem tem várias desvantagens em comparação com a estrutura alternativa:

var filter = function (categoria, value) { this.category = categoria; this.value = value; }; // var filter = function () {...} Filtro.prototype.checkproduct = function (produto) { // Execute alguns cheques retornar is_match; }
var Filter = function( category, value ){
  this.category = category;
  this.value = value;

  // product is a JSON object
  Filter.prototype.checkProduct = function( product ){
    // run some checks
    return is_match;
  }
};

DATINGACKS FUNCIONAL:

  1. Redunda e ineficiente atribuição: o método do protótipo é atribuído várias vezes, que é desnecessário e pode ter desempenho de implicações. do construtor dentro do método do protótipo pode levar a resultados inesperados. Por exemplo:
  2. var contador = function (InitialValue) { var valor = inicialValue; // Produto é um objeto JSON Contat.prototype.get = function () { valor de retorno; } }; var c1 = novo contador (0); var c2 = novo contador (10); console.log (c1.get ()); // produz 10, deve sair 0 neste cenário, get () retorna o valor do valor variável local do C2 em vez de C1, porque o fechamento do método faz referência ao valor mais recentemente definido no protótipo e
outras considerações:
var Counter = function(initialValue){
  var value = initialValue;

  // product is a JSON object
  Counter.prototype.get = function() {
      return value  ;
  }
};

var c1 = new Counter(0);
var c2 = new Counter(10);
console.log(c1.get());    // outputs 10, should output 0
A primeira estrutura proíbe acessar o protótipo fora do construtor, potencialmente limitando a flexibilidade. casos.

conclusão:

    Embora a primeira estrutura possa ser estilisticamente agradável, ela pode introduzir desvantagens funcionais e problemas de escopo. Geralmente é recomendável atribuir métodos de protótipo fora da função do construtor (como na segunda estrutura) para evitar possíveis problemas.
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3