Dentro de obj2, o this do metodo chamado não aponta para ele

Eu tenho uma função

let comparaComThis = function (param) {
    console.log (this === param)
}

e tenho um objeto que chama essa função

const obj2 = {  
    consta(){ 
        comparaComThis(obj2)
    }
}

a questão é que quando eu chamo a função do objeto, o this aponta para o global. Porquê?

1 curtida

Por padrão, this será o objeto global que no navegador é o window.

Agora, se tu usar o modo estrito: ‘use strict’. O this será definido a partir de onde ele é executado:

Em modo estrito, o valor de this permanece seja qual for o definido ao entrar no contexto de execução

Ex.:

<script>
'use strict';

var comparaComThis = function(param) {
	console.log(this === param)
}

const obj2 = {
	consta() {
		comparaComThis(obj2);
		this.comparaComThis2(obj2);
	},
	comparaComThis2: function(param) {
		console.log(this === param)
	}
}

obj2.consta();
</script>

Console:

false
true

FONTE: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Operators/this

1 curtida