Как именно ключевое слово this работает в JS? - PullRequest
0 голосов
/ 14 июля 2020

Я новичок в JS, хотя у меня есть приличный опыт работы с другими языками. Насколько я понимаю, в JS, когда в методе, this относится к его объекту-владельцу.

var superman = {
    name : 'Superman',
    sayHi : function(){ 
        alert("Hello, I'm "+this.name) 
        }
    };

Когда я пишу,

var print = superman.sayHi()

print()

Он предупреждает, Hello, I'm Superman как и ожидалось.

Однако, если я напишу,

var print = superman.sayHi

print()

Он предупреждает, Hello, I'm undefined

Почему это происходит? this в superman должно относиться к объекту superman, почему var print = superman.sayHi() и var print = superman.sayHi производят разные результаты?

1 Ответ

0 голосов
/ 14 июля 2020

На самом деле this передается в качестве аргумента по умолчанию только всем функциям

Примечание: только вызовы функций

В вашем коде происходит следующее:

при выполнении var print = superman.sayHi() вы вызываете функцию sayHi, и this передается по умолчанию

И в этом случае var print = superman.sayHi значение this не передается.

Таким образом, он печатает undefined как значение this.name.

Вы можете сделать это

var superman = {
name : 'Superman',
sayHi : "Hello, I'm "+name
};

//and then print sayHi

alert(superman.sayHi);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...