Я прочитал этот абзац об этом ключевом слове: https://bonsaiden.github.io/JavaScript-Garden/#function.this
В этом первом случае this
относится к global
objet, и это кажется совершенно нормальным, потому что когда у нас есть функция стрелки, она автоматически связывает this
с той, которая находится во внешней области видимости.
var obj = {
foo : () => console.log(this)
}
console.log(obj);
obj.foo()
Однако я не могу объяснить следующее поведение:
function bar(){
this.foo = () => console.log(this)
}
var obj = new bar()
console.log(obj);
obj.foo()
Теперь this
относится к obj
вместо global
. Это почему ? Мне кажется, что использование ключевого слова new
с функцией конструктора должно вернуть объект obj
, который точно такой же, как в первом примере. И поэтому функция стрелки должна иметь this
, которая относится к global
, а не к obj
. Не могли бы вы объяснить мне, что происходит во втором случае, пожалуйста?