this値アクセス時に詰んだのでメモ

thisキーワードを使って、入れ子型の関数から外側の関数の呼び出しコンテキストを取得しようとした際に詰んだのでメモ。

そもそも、入れ子型の関数は呼び出し元のthis値を継承しない。そのため、外側の関数のthis値にアクセスしたい場合は内側の関数スコープ内にthis値を保存しておく変数を作らないと詰む。って感じのことがサイ本(第6版のp. 181)に書いてあった。

いまいち理解できなかったので、実際に、オブジェクト:o,メソッド:mにおける、(直接アクセス/変数保存)の結果を調べてみた。

前々から、var self = this って何のために使ってるんやろ? ってなってたのでスッキリした。サイ本まじありがてぇ。とりわけ、第8章のクロージャ実装のコラム(第6版 p. 195)に書いてあった、オブジェクトがガベージコレクトされるタイミングの話はすごくためになった(小並感)。