考虑到 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]
我对此感到有些困惑,这里的交易是什么?类声明是否受作用域的影响,与其他变量一样吗?还是由每个供应商按自己的意愿实施?