Este exemplo descreve o uso do JS funcione isso. Compartilhe para sua referência. Os detalhes são os seguintes:
Ao escrever funções no JS, isso é usado muito. O que exatamente é isso? Esta é uma palavra -chave, um ponteiro, apontando para o escopo do ambiente de execução, também chamado de contexto.
Vamos falar sobre funções primeiro. Pessoalmente, entendo que as funções são blocos de código que são chamados repetidamente no idioma.
Em JS, quando uma função é atribuída às propriedades de um objeto, é chamado de método
como:
var m = {}; m.title = 'title'; m.show = function () {alert (this.title)} m.show ()É chamar a função como o método do objeto m
Nesse caso, isso aponta para o objeto m.
O nome da função direta de chamada é chamado de função:
var a = 1212; function show () {alert (a) // 1212} show () // 1212Em um ambiente global, variáveis globais podem ser entendidas como propriedades de janela, e as funções globais são métodos de janela
Veja o seguinte exemplo:
var m = {}; m.id = 'mmm'; m.show = function () {alert (this.id);} var a = {}; a.id = 'aaa'; a.show = m.show; a.show (); //aaaa.show=m.show; Entenda esta frase primeiro, porque uma função é um objeto, m.show = function () {alert (this.id)}Esta expressão é equivalente a se referir a A.show e M.Show ao mesmo tempo
function () {alert (this.id)}Realmente equivalente a
a.show = function () {alert (this.id)}Então, quando a.show () é chamado, isso aponta para um objeto a,
Olhe para o seguinte castanho
var m = {}; m.id = 'mmm'm.show = function () {alert (this.id)} var a = {} a.id =' aaa'a.show = function () {m.show ()}; a.show (); // mmmmPortanto, ao chamar a.show (), é equivalente a chamar o método de M.Show (), então isso. aponta para um objeto M.
Veja o exemplo a seguir, ainda não entendi muito no começo
var color = 'vermelho'; var app = {}; app.color = "verde"; app.paint = function (node) {node.style.color = this.color; alert (this.color);} função findnode (retorno de chamada) {var btn = document.QuerySelector ('. btn'); retorno de chamada (BTN); // Passa,} findNode (app.paint); alerta (this.color); // vermelho em vez de verdeQuando uma função passa por argumentos, ela passa argumentos de acordo com o valor, não referências
Então quando findNode (app.paint); é transmitido, é na verdade
function (node) {node.style.color = this.color; alerta (this.color);}, como o FindNode é definido globalmente, isso aponta para a janela ou indefinido;
Sobre os parâmetros de passagem, passando valores passados
Função mostra (a) {alert (a)}É fácil de entender quando os parâmetros são tipos de dados básicos
var b = 10; show (b) // alerta (10);
Quanto ao objeto
var c = {}; c.Prop = true; var shlighProp = function (obj) {obj.prop = false} ShowProp (c); //c.prop=falseAlgumas pessoas pensam que o exemplo acima é passar os parâmetros de acordo com a referência
De fato, o acima ainda está passando parâmetros de acordo com o valor. Quando o SlightProp (c) passa C para a função, C é realmente equivalente a uma referência. A função tem obj.prop = false, que é equivalente à alteração do objeto referenciado para {prop: false}
Veja o exemplo a seguir
var c = {}; c.Prop = true; var shlighProp = function (obj) {obj = new Object (); obj.prop = false retorno obj;} ShowProp (c); alert (c.prop); //verdadeiroAqui, o OBJ recebido foi modificado. Se você passar os parâmetros de acordo com a função por referência, as modificações dentro da função serão definitivamente refletidas fora.
Espero que este artigo seja útil para a programação JavaScript de todos.