O escopo das funções e esse apontamento são partes muito importantes do JS. É preciso uma lógica para esclarecer essa coisa e ver como é minha lógica ...
Abaixo está um esboço que você pode selecionar diretamente os itens que você está interessado em ler.
• Método da definição da função: definição direta (em janela, definição interna), métodos de objeto, métodos de protótipo de objeto;
• Método de chamada de função: ligue diretamente, ligue/aplique, com
• Para métodos de funções e objetos diretamente definidos, o escopo é a cadeia de escopo em sua definição por padrão.
• Para funções definidas diretamente, isso aponta para a janela.
• Para o método do objeto, isso aponta para o objeto instanciado (correspondente ao caso em que o objeto instanciado o retorna por padrão).
• Use Chamada/Aplicar para Alterar este Pontoning do Método
• Ao definir uma função ou método, sua cadeia de escopo pode ser alterada com.
Vamos falar sobre isso em detalhes abaixo:
A definição de funções, como mencionado no esboço, pode ser dividida em dois tipos: definição direta (em janela, definição interna), métodos de objeto (ou métodos de protótipo de objeto). A partir do código de exemplo a seguir, você pode ver que a função FN1 e FN2 e a dofunção do método do objeto são do domínio correspondente quando a função usa o nome.
var name = 'Nome em Window <br/>'; var ResultCon; function fn1 () {resultcon.innerhtml += name;} função myobj () {var name = 'nome em myobj <br/>'; this.dofunction = function () {resultCon.innerhtml += name;O que acontece se "nome" for substituído por "this.name" ao usar o valor do nome? Veja o seguinte exemplo:
var name = 'nome em janela <br/>'; var resultcon; function fn1 () {resultcon.innerhtml += this.name;} function myObj () {var name = 'nome em myobj <br/>'; this.Dofunction = function () {ResultCon.innerhtml += this.name;A julgar pelos resultados, podemos verificar os 4º e 5º itens no esboço. Também podemos ver que isso e o escopo são dois conjuntos separados de cadeias, seguindo uma lógica de consulta variável independente. A lógica de consulta específica será mencionada na seguinte análise de desempenho. Se você é um novato, recomenda -se primeiro examinar o conhecimento básico da "cadeia de escopo JS".
Em relação ao método de chamada de uma função, eu uso o exemplo a seguir para ilustrar o segundo e o 6º artigo no esboço:
var name = 'nome em janela <br/>'; var resultcon; function fn1 () {resultcon.innerhtml += this.name;} function myObj () {var name = 'nome em myobj <br/>'; this.Dofunction = function () {ResultCon.innerhtml += this.name;O uso de chamada e aplicação quando chamado é alterar o salto da função chamada. O uso de com é alterar o domínio de consulta da variável na função chamada. Removemos a chamada e o nome no exemplo acima e adicionamos para demonstrar a função de com.
var name = 'nome em janela <br/>'; var resultcon; function fn1 (myScope) {com (myScope) {resultcon.innerhtml += name; }} function myobj (myScope) {var name = 'nome em myobj <br/>';Não é conveniente usar e você precisa adicionar à função chamada. Algumas pessoas podem se perguntar se você pode chamar o seguinte para alterar o escopo da variável como um todo sem alterar a função chamada?
com (myScope) {fn1 (); fn2 (); var obj = new Myobj (); obj.dofunction ();}Infelizmente, não! Portanto, a chamada e a aplicação pode ser usada em todos os lugares em algumas estruturas maduras, mas com raramente é usado. Ao usar o jshint para detectar a sintaxe da JS, pequenos pontos vermelhos são marcados com. Em algumas orientações de codificação de JS, também é recomendável usar com o mínimo possível, porque com alterações na cadeia de consultas padrão de variáveis, ele confundirá o pessoal de manutenção posterior e algumas considerações de desempenho. Por favor, use com com com cautela.
O artigo acima entende profundamente o escopo e essa direção das funções JS é todo o conteúdo que compartilho com você. Espero que possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.