中級 › メソッドを変数に代入・受け渡しするとthisが失われる › パターン3
メソッドを変数に代入・受け渡しするとthisが失われる
オブジェクトのメソッドを変数に代入したり、別の関数に渡して呼び出したりすると、呼び出し時にレシーバーの情報が失われ、thisがオブジェクトを指さなくなります。
1 const logger = { prefix: "[LOG]", write(msg) { return this.prefix + " " + msg; } }; 2 const { write } = logger; 3 console.log(________________________); ^
出力: undefined hi期待: [LOG] hi (エラーにはなりません)
空欄を埋めて実行を通す
分割代入で取り出したwriteはloggerとの結びつきを失っています。call(logger, ...)で明示的にthisを指定する必要があります。
次の問題