В javascript это слово означает непосредственный родительский контекст.
- Но когда вы используете это ключевое слово в функции arrow, то оно не означает непосредственный родительский контекст. Оно означает контекст самого себя.
*Просто посмотрите два кода и подумайте, в чем разница между ними.
var title = " awesome.";
var statement = {
name: ' MERN ',
lang: 'Javascript',
getDetails: function () {
name = "normal function";
return "lets see " + this.name+ " " + name + title;
},
getDetails2: () => {
name = " arrow function";
return "let us see " + this.name + " " + name + title;
}
};
Запустите функцию getDetails: console.log(statement.getDetails())
вывод:
lets see MERN normal function awesome.
снова запустить функцию getDetails2 : console.log(statement.getDetails2())
вывод:
let us see arrow function arrow function awesome.
здесь вывод: arrow function arrow function дважды. таким образом, мы понимаем, что наше ключевое слово this.name не означает родительское имя: ‘ MERN ‘.
Advance
var title = " awesome.";
var statement = {
name: ' MERN ',
lang: 'Javascript',
getDetails: function () {
name = "normal function";
return "lets see " + this.name+ " " + name + title;
},
getDetails2: () => {
name = " React";
return {
name: "Node",
getDetails3: function() {
return "lets see " + this.name+ " " + name + title;
}
};
}
};
снова запустите функцию getDetails3() : statement.getDetails2().getDetails3()
выход:
lets see Node React awesome.
Advance2
снова запустите функцию getDetails3() : statement.getDetails2().getDetails3()
выход: