首先,你會得到一個投票,因爲這根本不是一個愚蠢的問題。 Stackoverflow上的一些人是有道理的。
函數有一些稱爲上下文的東西。上下文是函數被調用的對象。
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;
這將打印嗨我叫jill時,它被稱爲。
首先明白這一點。
現在到第二步。
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,上下文,$ this 或其他任何東西,當你分配這個值給它。與其他任何常規變量一樣,它被「鎖定就位」。
let a = 2;
//this will never change
let _self = this //_self will never change as it's your variable
現在當你調用你的函數,它會查找_self。它確切地知道你在說什麼。
ps。我也在尋求投票;)
可能重複[「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 /什麼-underlies - 這-JavaScript的成語-VAR自本) – JJJ