Во-первых, вы получаете голос, поскольку это не глупый вопрос. Некоторые люди на Stackoverflow являются wayyyy на право.
Функции имеют что-то, называемое контекстом. Контекст - это объект, на который вызывается функция.
let person = {
name:"bill",
speak:function(){
console.log("hi i am "+this.name)
}
}
, если вы должны были сделать person.speak()
он будет называться на объект, который был определен. Переменная person
- это контекст
поэтому если вы это скажете. это то же самое, что сказать person.name
Теперь вы можете прикрепить функцию к чему-то еще.
var newperson = {name:'jill'}
newperson.speak = person.speak;
это будет печатать привет, я звоню, когда это называется.
понять это первым.
Теперь на втором шаге.
GetConfig возвращает функцию, однако эта функция не прикреплена ни к одному объекту.
Проверьте это.
let person = {
name:"bill",
getSpeakFunction:function(){
return function(){
console.log('hi my name is '+this.name)
}
}
}
let func = person.getSpeakFunction()
Теперь функция func является само по себе.
Теперь, когда его называют «кто», о котором вы, черт возьми, говорите. Вот что думает функция.
Таким образом, мы можем помочь функции, сказав.
let person = {
name:"bill",
getSpeakFunction:function(){
let context = this; //listen hear function this is what i am talking about
return function(){
console.log('hi my name is '+context.name)
}
}
}
let func = person.getSpeakFunction()
это специальный язык определяет значение этого, однако контекст не является. контекст будет тем, что ему присвоено. Он не изменится, если вы его не измените.
так используя слово _self, context, $ this или что-нибудь еще, когда вы присваиваете ему значение этого. «заблокирован на месте», как и любая другая регулярная переменная.
let a = 2;
//this will never change
let _self = this //_self will never change as it's your variable
Теперь, когда вы вызываете свою функцию, и она ищет _self.он точно знает, о чем вы говорите.
пс. я также ищу голоса;)
Возможный дубликат [Как работает ключевое слово this?] (http://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work) – toskv
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/let – naththedeveloper
Возможный дубликат [Что лежит в основе этой идиомы JavaScript: var self = this?] (Http://stackoverflow.com/ вопросы/962033/что-лежит в основе-это-на JavaScript идиома-вар-я-это) – JJJ