JavaScriptが変数のスコープに関数をどのように使用するかを考えて、次の例の場合に何が起こるかについて考え始めました。
var OuterClass = function () {
var InnerClass = function () {
this.foo = "bar";
};
this.getInstanceOfInner = function () {
return new InnerClass();
};
};
var instanceOfOuter = new OuterClass();
console.log(instanceOfOuter.getInstanceOfInner());
上記のコードをさまざまなブラウザでテストすると、結果は異なります。
- Chrome:内部クラスのインスタンスをログに記録し、クラス宣言を認識しているようです。
- Firefox:「型指定されていない」オブジェクトをログに記録しているようですが、プロパティは正しいです。
- IE9:オブジェクトの文字列表現をログに記録します
[object Object]
私はこれについて少し混乱しました、ここでの取引は何ですか?他の変数と同じように、クラス宣言はスコープの対象になりますか?それとも、各ベンダーが好きなように実装するのですか?