this(JavaScript)
隨function執行場合不同,this指向的值也會不同
大多數情況下,this代表呼叫function的物件
Owner Object of the function
亦即function執行時所屬的物件
而非function本身
脫離物件的this基本上沒有任何意義
要看this,就看這個函式「怎麽被呼叫」
例如addEventListener底下的this是「觸發事件的元素」
裡頭的callback function中的this會因為Default Binding指向window
或是
使用一個變數儲存this當做參考值
code:javascript
"use strict";
function hello(a, b) {
console.log(this, a, b);
}
// 這兩種方式皆為呼叫 function 的函式
// 第一個參數值即為 this
hello.call("yo", 1, 2);
// apply 以 Array 的方式傳進參數
hello.apply("hihihi", 1, 2); // bind 則會回傳一個新的 function
// 並且值在調用 bind 後就不會改變
const myHello = hello.bind("my");
myHello();
it's like a hidden argument to your function.
calls with dot, like obj.fn(), pass the part before the dot (obj) as this.
calls without a dot, like fn(), don't pass any this.
if you didn't pass any this, it's set to a default
(undefined in strict mode, window in loose mode).