1. Respeitar a propriedade do objeto Não adicionar atributos a instâncias ou protótipos; Não adicione métodos a instâncias ou protótipos; Não redefina métodos que já existem. A melhor forma de fazer isso é nunca modificar objetos que não são de sua propriedade. Possuir um objeto significa que você o criou, como um tipo personalizado ou literal de objeto que você mesmo criou. Arrays e documentos obviamente não são seus, eles existem antes mesmo do seu código ser executado. 2. Evite variáveis globais Crie uma variável global no máximo, permitindo que outros objetos e funções existam nela. Dê uma olhada nos exemplos a seguir:
//两个全局量——避免!! var name = "Nicholas"; função sayName(){ alerta(nome);
} Esse código contém duas quantidades globais: o nome da variável e a função sayName(). Na verdade, você pode criar um objeto que contenha ambos, como mostrado no exemplo a seguir:
//一个全局量——推荐 var MyApplication = {
name: “Nicholas”,
sayName: function(){ alerta(this.name);
} }; 3. Evite comparar com nulo Se o valor deve ser um tipo de referência, use o operador instanceof para verificar seu construtor; Se o valor for um tipo base, use typeof para verificar seu tipo; Se você quiser que o objeto contenha um nome específico de método, use o operador typeof para garantir que o método com o nome especificado exista no objeto. (Aqui recomendo meu grupo de aprendizagem e intercâmbio de front-end na web: 675498134, seja você iniciante ou um deus, eu te convido a vir aprender, se comunicar e compartilhar produtos secos de vez em quando, incluindo os materiais e tutoriais mais recentes de front-end que eu mesmo compilei para te oferecer, e há especialistas técnicos que explicam o conhecimento de front-end ao vivo todos os dias. Amigos iniciantes e avançados são bem-vindos para aprender, se comunicar juntos e progredir juntos. ) 4. Usar constantes Embora o Javascrip{filter}t não tenha um conceito formal de constantes, ele é útil. Essa ideia de separar dados da lógica da aplicação pode alterar dados sem correr o risco de introduzir erros. Dê uma olhada nos exemplos a seguir: var Constantes = { INVALID_VALUE_MSG: "Valor inválido!", INVALID_VALUE_URL: "/errors/invalid.php" }; função validar(valor){ if (!value){ alerta(Constants.INVALID_VALUE_MSG); locatio{filter}n.href = Constants.INVALID_VALUE_URL;
}
} 5. Evitar busca global Provavelmente o mais importante para otimizar o desempenho dos scripts é prestar atenção às consultas globais. Usar variáveis e funções globais é definitivamente mais caro do que local porque envolve buscas na cadeia de escopo. Dê uma olhada na seguinte função: function updateUI(){ var imgs = document.getElementsByTagName("img"); para (var i=0, len=imgs.length; Eu < Len; i++){ imgs[i].title = documento.title + " imagem " + i;
} var msg = document.getElementById("msg"); msg.innerHTML = "Atualização completa.";
} A função pode parecer perfeitamente aceitável, mas contém três referências ao objeto global do documento. Se houver múltiplas imagens na página, a referência do documento no loop for será executada várias vezes ou até centenas de vezes, cada vez que uma busca em cadeia de escopo será realizada. Ao criar uma variável local apontando para o objeto do documento, você pode melhorar o desempenho dessa função limitando uma consulta global uma vez: function updateUI(){ var doc = documento; var imgs = doc.getElementsByTagName("img"); para (var i=0, len=imgs.length; Eu < Len; i++){ imgs[i].title = doc.title + " imagem " + i;
} var msg = doc.getElementById("msg"); msg.innerHTML = "Atualização completa."; Aqui, primeiro coloque o objeto document na variável doc local; Depois, substitua o documento original pelo restante do código. Comparado à versão original, a função atual tem apenas uma busca global, que é definitivamente mais rápida. 6. Outras precauções para desempenho Métodos nativos são mais rápidos - Sempre que possível, use o método nativo em vez de reescrever um você mesmo com Javascrip{filter}t. O método nativo é escrito em uma linguagem compilada como C/C++, então é muito mais rápido que o Javascrip{filter}t. A coisa mais esquecida sobre o Javascrip{filter}t é a matemática complexa que pode ser encontrada em objetos Math; Esses métodos são muito mais rápidos do que qualquer outro método escrito com Javascrip{filter}t, como seno e cosseno. Instruções switch são mais rápidas - Se você tem uma série de instruções if-else complexas, pode obter código mais rápido convertendo-as em uma única instrução switch. Você também pode refinar ainda mais a declaração switch organizando a declaração de caso em ordem de mais provável para menos provável. Operadores de bits são mais rápidos - Ao realizar operações matemáticas, operações de bits são mais rápidas do que qualquer operação booleana ou aritmética. Substituir seletivamente operações aritméticas por operações em bits pode melhorar muito o desempenho de cálculos complexos. Lógica como módulo, lógica e lógica de soma podem ser consideradas como substituidas por operações de bits.
|