まず、これはまったく愚かな質問ではないので、あなたはアップ票を獲得します。 Stackoverflowの一部の人は、資格を得るためにwayayyyです。
関数には、コンテキストと呼ばれるものがあります。コンテキストとは、関数が呼び出されているオブジェクトのことです。
let person = {
name:"bill",
speak:function(){
console.log("hi i am "+this.name)
}
}
あなたがperson.speakを行うにした場合は()
それが定義されたオブジェクトで呼び出されます。変数person
はコンテキスト
です。 person.nameと同じです。
これで、この機能を他のものに取り付けることができます。
これは、私が呼び出されたときに私はジルです。
これを最初に理解してください。
今すぐステップ2に進みます。
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が検索されます。あなたが話していることを正確に知っています。
ps。 )
[この "キーワードはどのように機能しますか?](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/what-underlies-this-javascript-idiom-var-self-this) – JJJ