🐣
【JavaScript】thisとbindについて(覚え書き)
作成日:
2021/05/09
0
thisは中身の変化する変数。
const test = document.getElementById("test");
function kansu() { //普通の関数
console.log(this);
}
const kansu2 = () => { //アロー関数
console.log(this);
}
test.addEventListener("click", function() {
console.log(this); // =>testのHTML要素
kansu(); // =>window
kansu2(); // =>window
});
1個目はイベントリスナーの中で呼び出しており、イベントターゲットであるtestがthisになる
関数の中で呼び出したthisはグローバルオブジェクト(webブラウザの場合はwindow)になる
`const test2 = document.getElementById("test2");
const test3 = document.getElementById("test3");
const test4 = document.getElementById("test4");
// testContentに毎秒1ずつ足していく処理
// 下の3つはいずれも関数の中でbindでthisがイベントターゲットに固定されている
function countUp() {
this.textContent++;
};
test2.addEventListener("click", function() { //外で定義した関数を中で呼んでbindをつける
this.textContent = 1;
setInterval(countUp.bind(this), 1000);
})
test3.addEventListener("click", function() { //中で関数をつくって最後にbindをつける
this.textContent = 1;
setInterval(function() {
this.textContent++;
}.bind(this), 1000);
})
test4.addEventListener("click", function() { //アロー関数にするとbindを省略できる
this.textContent = 1;
setInterval(() => {
this.textContent++;
}, 1000);
})
参考
https://foreignkey.toyao.net/archives/763
https://techplay.jp/column/593
https://developer.mozilla.org/ja/docs/Web/API/EventTarget/addEventListener
2021年1月からプログラミングの勉強開始。
主にJavaScript, Rubyについてメモ
を残していきたい。