首先,您会获得赞成票,因为这根本不是一个愚蠢的问题。
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;
当它被调用时,它会打印 hi i am 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()
this 是特殊的语言决定 this 的值,但上下文不是。
context 将是分配给它的任何内容。除非你程序员改变它,否则它不会改变。
所以使用 _self、context、$this 这个词
或其他任何东西,当您将 this 的值分配给它时。
它像任何其他常规变量一样被“锁定”。
let a = 2;
//this will never change
let _self = this //_self will never change as it's your variable
现在当你调用你的函数时,它会寻找 _self。它确切地知道你在说什么。
ps。我也在寻求选票;)