В IE использование foo.prototype
является «неоднозначным», потому что идентификаторы NFE просочились в содержащую область.Так как локальная утечка foo ближе, чем глобальная foo, foo.prototype
будет увеличивать локальную foo
, а не window.foo
.
. После выхода из внешней функции локальная foo
будет потеряна иglobal foo
не имеет .prototype.bar
по указанным выше причинам.
Вы можете устранить неоднозначность следующим образом:
(function(){
this.foo = function foo(){};
this.foo.prototype = {
bar:function(){
return 'bar';
}
};
})();
var x = new foo;
console.log(x.bar()) //"bar"