[javascript] this keyword
6532 ワード
In most cases, the value of this is determined by how a function is called (runtime binding). It can't be set by assignment during execution, and it may be different each time the function is called. ES5 introduced the bind() method to set the value of a function's this regardless of how it's called, and ES2015 introduced arrow functions which don't provide their own this binding (it retains the this value of the enclosing lexical context). - MDN
その理由は、呼び出し
this
どうやって決めたの?
this
は、これが呼び出されたオブジェクトによって異なります.function test() {
console.log(this);
}
test(); // window object
上記の場合、test
にはthis
が印刷されており、出てきたのはwindow
である.その理由は、呼び出し
test
がどのようなオブジェクトであるかから判断することができる.window.test() === test() // true
test
の左側にはwindow
が隠れています.すなわちwindow
が歌うので、window
が出力される.objectのthis
const obj = {
name: 'cho',
printName() {
console.log(this);
}
}
obj.printName() // {name: 'cho', printName: ƒ}
printName
が呼び出されたのはobj
であるため、this
の結果値はwindow
ではなく、obj자
体である.この機能を使用するメリット
1. gives methods access to their object
const obj = {
name: 'cho',
printName() {
console.log('My name is', this.name);
}
}
obj.printName() // My name is cho
独自のオブジェクト値にアクセスできます.2. execute same code for multiple objects
function printName() {
console.log('My name is', this.name);
}
const obj1 = {
name: 'cho',
printName
}
const obj2 = {
name: 'stefan',
printName
}
obj1.printName() // My name is cho
obj2.printName() // My name is stefan
this
を使用して乾燥して書くことができます.すなわち、printName
を歌う対象のそれぞれthis
を利用することができる.Reference
この問題について([javascript] this keyword), 我々は、より多くの情報をここで見つけました https://velog.io/@devstefancho/javascript-this-keywordテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol