Esse
Esta é uma palavra -chave no JavaScript. O valor disso mudará dependendo do uso da função. Mas sempre há um princípio, ou seja, isso se refere ao objeto que chama a função.
1. Definição
1. Este é um objeto especial (ou esta referência) dentro da função - refere -se ao objeto de ambiente no qual a função é executada.
2. Esta referência é uma variável somente leitura que pode ser usada a qualquer momento no código JavaScript. Essa referência de referência (pontos para) é um objeto que tem a característica que altera automaticamente seu objeto de referência de acordo com o contexto do código. Suas regras de citação são as seguintes:
• No código mais externo, essa referência refere -se a um objeto global.
• Dentro de uma função, essa referência varia de acordo com a maneira como a função é chamada. do seguinte modo
1) A chamada do construtor - esta referência se refere ao objeto gerado
2) Chamada de método - esta referência refere -se ao objeto receptor
3) Aplicar ou ligar - esta referência refere -se a um objeto especificado com os parâmetros de aplicar ou chamar
4) Outras maneiras de chamar - essa referência refere -se ao objeto global
2. Com base nas informações on -line acima e relevantes, o status de uso desse objeto (citado) é resumido da seguinte forma:
JavaScript é uma linguagem dinâmica e somente quando essa palavra -chave é executada pode ser determinada. Portanto, isso sempre aponta para o chamador, ou seja, uma referência ao "objeto de chamada". Simplificando, qual objeto o método chamado pertence, isso aponta para esse objeto. Dependendo do método de chamada de função, isso pode apontar para um objeto global, o objeto atual ou qualquer outro objeto.
1. Chamadas de função global, isso na função global apontará para a janela de objeto global. (Modo de chamada da função)
// Lista de código 1 <script type = "text/javascript"> var message = "this in window"; // Esta frase é escrita fora da função e dentro da função function func () {if (this == Window) {alert ("this == Window"); alerta (mensagem); this.methoda = function () {alert ("eu sou uma função");}}}} func (); // Se o método FUNC não for chamado, os atributos ou métodos definidos nele não serão recuperados por Methoda (); </script>O resultado da chamada de func () é esta == janela, esta na janela
O resultado da chamada para Methoda () é uma função
2. CHAMADA CONSTRUTOR, isto é, instanciando um objeto usando novo, isso apontará para o objeto gerado através do construtor. (Modo de chamada do construtor)
Listagem de código 2
<script type = "text/javascript"> function func () {if (this == window) {alert ("this == window");} else {alert ("this! = window");} this.fieldA = "eu sou um campo"; alert (this);} var obj = new Func (); alert (ALERA); // Isso aponta para o objeto obj </sCript>3. Chamando o método do objeto, isso aponta para o objeto atual. Qualquer função, desde que a função seja usada ou atribuída como o método de um objeto, esta dentro da função é uma referência ao próprio objeto. Também pode ser entendido que isso é escrito em um objeto normal, e isso aponta para o próprio objeto. (Modo de chamada do método)
(Definição de método: uma função como uma propriedade de objeto é chamada de método)
// Lista de código 3 <script type = "text/javascript"> var obj = {x: 3, doit: function () {if (this == window) {alert ("this == window");} else {alert ("o método é chamado:" + this.x);}}}; obj.doit ("); // Isso aponta para o objeto obj </sCript>4. Chame isso através do método Aplicar ou chamar, isso aponta para o objeto passado.
O método de aplicação ou chamada pode ser usado para chamar um método em vez de outro objeto. O método de chamada altera o contexto do objeto de uma função do contexto inicial para um novo objeto especificado por ThisObj. Se o parâmetro ThisOBJ não for fornecido, o objeto global será usado como thisObj. (Aplique o modo de chamada)
// Lista de código 4 <script type = "text/javascript"> var obj = {x: 3, doit: function () {alert ("o método é chamado:" + this.x);}}; var obj2 = {x: 4}; obj.doit (); // 3, isso aponta para objobj.doit.apply (obj2); // 4, isso aponta para obj2obj.doit.call (obj2); // 4, isso aponta para obj2 </sCript>5. Isso na cadeia de protótipos - o objeto de protótipo e isso no construtor apontam para o objeto de instância recém -criado. Use o método de extensão de protótipo para obter uma instância do objeto de origem usando isso, e os campos privados não podem ser obtidos através da cadeia de protótipo.
// Lista de código 5 <script type = "text/javascript"> function func () {this.fieldA = "eu sou um campo"; var privatefiella = "eu sou um var";} func.prototype = {extendMethod: functenta (str) {alert (str + ":" this.fielda); alert (privatela); // Ocorreu um erro, o campo privado não pôde ser obtido através da cadeia de protótipo. }}; var obj = new func (); obj.extendMethod ("do protótipo"); // Neste objeto apontador OBJ na cadeia de construtor e protótipo neste momento, obj </sCript>6. Isso no fechamento - fechamento: a função escrita na função, isso aponta para a janela de objeto global.
6.1 fechamentos em um objeto
// Lista de código 6 <script type = "text/javascript"> var name = "the window"; var obj = {name: "meu objeto", getNamefunc: function () {return function () {return this.name;}}}}; alert (obj.getnamefunc () ()); // A janela </sCript>Neste momento, isso no fechamento aponta para a janela de objeto global e só pode obter as propriedades do objeto global. Então, o que devo fazer se as propriedades dentro do objeto (variáveis de funções externas) quiserem ser acessadas? Basta salvar esse objeto da função externa em uma variável que pode ser acessada por um fechamento. Veja o seguinte código:
// Lista de código 7 <script type = "text/javascript"> var name = "the window"; var obj = {name: "meu objeto", getNamefunc: function () {var that = this; return function () {return that.name;}}}; // meu objeto </sCript>Atribua isso à função externa a essa variável, você pode ler a variável da função externa.
6.2 Se está se referindo diretamente à função ou instanciando uma função, isso na função de fechamento retorna os pontos para a janela.
// Lista de código 8 <script type = "text/javascript"> função a () {alert (this == window); var that = this; var func = function () {alert (this == window); alert (that);}; retorna func;} var = a (); b (); // true, true, [janela do objeto] var c = novo a (); c (); // false, verdadeiro, [objeto objeto] </sCript>7. A função usa o método bind () para ligar um objeto, e isso apontará para o valor passado para a função bind ().
// Lista de código 9 <script type = "text/javascript"> window.color = "vermelho"; var obj = {color: "blue"}; function saycolor () {alert (this.color);} var objSaycolor = saycolor.bind (obj); objsaycolor (); // azul </sCript>8. O segmento de script incorporado no elemento html, isso aponta para o próprio elemento
// Lista de código 10 <div onclick = "test (this)" id = "div"> clique em mim </div> <script type = "text/javascript"> function teste (obj) {alert (obj); // [objeto htmldivelemement]} </sCript>9. Escreva na tag de script: refere -se à janela de objeto global. É o mesmo que a variável global chamada pela função global no primeiro ponto.
O exposto acima é uma cotação deste em JavaScript apresentado a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!