ECMAScript の名前解決は Scope チェーンと Prototype チェーンの2次元探索です。 詳しくは、 [[HasProperty]] 内部関数の仕様を見るとよく分かるぜ。ちなみに、 [[Prototype]] 内部プロパティは実装系によっては __proto__ として実装されていますので読み替えると吉です。 Activation Object には [[Prototype]] はありません。 Global Object ( たいてい window ) には、たいていあります。したがって、 AO に対する prototype チェーン探索は必ず失敗して次の(親の) AO への Scope チェーン探索に移ります。これが、名前解決が関数の入れ子の順に進んでいっているように傍目には見える理由です。この違いは下のコード例参照。 僕の個人的な感覚では、 ECMAScript には

