O JavaScript deve ser um dos idiomas mais populares de plataforma cruzada agora. Eu tenho brincado com algumas coisas interessantes no front -end, mas descobri que não dominei bem esse idioma. Eu estava um pouco descuidado, então queria aproveitar o tempo que tenho tempo para adicionar algumas coisas perdidas.
Esta ligação oculta
No começo, isso foi algo sobre o qual fiquei confuso, mas quando o vi pela primeira vez, não entendi. Em seguida, em situações semelhantes, o mesmo problema pode ser resolvido por métodos semelhantes. Então, tentei resolver o conhecimento para facilitar a pesquisa.
Este é um erro de design da linguagem JavaScript, mas parece que esse erro é inevitável, as funções são objetos, matrizes são objetos, etc. CITAÇÕES EXEMPLOS DE "JAVASCRIPT: The Good Parts"
A cópia do código é a seguinte:
função add (a, b) {return a+b}
var sum = add (3,4);
console.log (soma); // soma = 7
Neste momento, o resultado da soma é 7.
A cópia do código é a seguinte:
> TIPO DE ADD
> 'Número'
Como você pode ver aqui, o tipo de add é um valor numérico.
Ao chamar uma função nesse modo, isso está ligado a uma variável global.
Isto é, no ambiente atual, podemos chamar isso dessa maneira
A cópia do código é a seguinte:
this.add (3,4)
Esta é a ligação implícita disso, e isso será vinculado de maneiras diferentes.
A cópia do código é a seguinte:
var hello = function () {
Retorne "Hello", this This.name;
};
nome = 'this';
console.log (hello ());
Então vamos pegar olá, isso. E quando
A cópia do código é a seguinte:
var hello = function () {
Retorne "Hello", this This.name;
};
Var User = {
Olá: Olá,
Nome: 'Phodal',
};
console.log (user.hello ());
Neste momento, o Hello in User aponta para a função Hello e, em nosso entendimento, como isso é possível? Então é um bug.
Se definirmos uma variável neste método e atribuirmos esse valor a ele, a função interna poderá acessar isso através dessa variável.
var que = isso
Então, quando a situação é um pouco mais complicada, precisamos usar:
A cópia do código é a seguinte:
vat isso = this;
Pontas:
1. O escopo dessa variável é sempre determinado por sua função de anexo mais próxima.
2. Use uma variável local (como eu, eu, isso) para disponibilizar essa ligação internamente.
Um exemplo simples:
A cópia do código é a seguinte:
var m = function () {
this.name = "m";
};
var mm = function () {
z = novo m ();
this.name = "mm";
z.printName = function () {
console.log (this.name);
};
return z.printName ();
};
var mm = novo mm;
Neste momento, isso aponta para a função M, que é o próprio MM. Se removermos isso de M, então o retorno indefinido. Por isso, criamos um pseudônimo para o escopo atual disso, como esse ou eu, etc.:
A cópia do código é a seguinte:
var mm = function () {
z = novo m ();
this.name = "mm";
var self = this;
z.printName = function () {
console.log (self.name);
};
return z.printName ();
};
Dessa forma, você pode retornar um mm. Além disso, o método de ligação da função de retorno de chamada pode ser usado no ES5.
A cópia do código é a seguinte:
var mm = function () {
z = novo m ();
this.name = "mm";
z.printName = function () {
console.log (this.name);
} .bind (this);
return z.printName ();
};
A ligação pode ligar métodos ao receptor.
outro
Outro olá, mundo
Encontrei o Print ('Hello') ('mundo') por acaso e, em seguida, saí de 'Hello, World'.
As chamadas funções de ordem superior parecem ser muito úteis. Se você estiver interessado, pode conferir o próximo artigo.