前提・実現したいこと
JavaScriptにおけるthisの挙動を理解したい。
function A(name) { this.name = name; } A.prototype.logThis = function() { console.log(this); //このthisは何を指すのかが分からない。 } const a = new A('トム'); //コンストラクタ関数Aをインスタンス化 console.log(a); //→実行結果{name: 'トム'} a.logThis(); //→実行結果 {name: 'トム'} const result = a.logThis; result(); //→実行結果 Windowオブジェクト なぜ変数に代入してから実行すると{name: 'トム'}でなくなるのか。
##質問①
なぜconsole.log(a)と、a.logThis()の実行結果が同じ{name: 'トム'}になるのか。
コードのコメント欄に書いているのですが、A.prototype.logThis内のthisが指す内容となぜそれを指すのかが分からないです。
##質問②
定数resultにa.logThisメソッドを代入。
その後、resultを呼び出す。
こうすると実行結果はWindowオブジェクトになります。
なぜa.logThis()のように普通に呼び出したときと、実行結果が異なるのでしょうか。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。