3
respostas

Dúvidas sobre a palavra-chave This ( this.)

Tenho uma função nomeada que está em um escopo global, sendo usando como método de uma objeto.

var  width = 500;
var shape = { width : 400};

var ShowWidth = fuction() {
document.write(this.width);
};
shape.getWidth = showWidth;
shape.getWidth();

Porque o (this.width), refere-se a largura 400 de shape e não a 500 da var width. this.width --- > largura: 400

3 respostas

Angelo, boa tarde!

Isso ocorre pois o escopo do this, é lexico, ou seja, ele muda de acordo com a situação. Para facilitar a leitura você pode usar essa ideia

var  width = 500;
var shape = { width : 400};

var showWidth = function() {
document.write(this.width);
};
shape.getWidth = showWidth;
shape.getWidth();

Isso é o que você passou, o navegador vai entender isso:

shape= {
    width: 400,
    getWidth: function() {
        document.write(this.width);
    };
}

Veja que nesse momento, o this dele, é o que está dentro da chave, que nesse caso é o variavel shape, ai ele busca o width de shape e encontra 400

Caso tenha ajudado não se esqueça de marcar como solucionado para alcançar mais alunos!

Espero ter ajudado e bons estudos!

Mas porque, o this dele, é o que está dentro da chave, que nesse caso é o variável shape.

var  width = 500;
var shape = { width : 400};

var showWidth = function() {
document.write(this.width);
};

Angelo, boa tarde!

Se você atribuir a função no objeto shape. o this, dele passa a ser o shape. Caso o contrario ele irá usar o escopo global.

Espero ter ajudado e bons estudos!