例 オブジェクト内の関数でsetTimeoutを使ってその中で、オブジェクト自身をthisとして使いたいような場合 var obj = { name: 'obj', func: function() { console.log(this); // => Object setTimeout(function() { console.log(this, this.name); // => Window, "result" }, 100); } }; obj.func(); そのまま書くと、setTimeoutで呼び出された関数のthisはWindowになる Functionが参照型だから、thisがwindowになってる? undifinedではなくwindowになる理由の理解がまだ不明瞭。 伝統的な方法 var obj = { name: 'obj', func: function() {
![JS 呼び出し元の this を担保するメモ。 - かもメモ](https://cdn-ak-scissors.b.st-hatena.com/image/square/ceab5dc14a242d6ca6486f4a37543c429ae3b1ef/height=288;version=1;width=512/https%3A%2F%2Fimages-fe.ssl-images-amazon.com%2Fimages%2FI%2F41JIdmRR14L._SL160_.jpg)