Проблемы контекста IIFE

В следующей конструкции:

(function(){

    var x = function(){
        alert('hi!');
    }

    var y = function(){
        alert("hi again!");
    }

    this.show = function(){
        alert("This is show function!");
    }

})();

Почему this относится к объекту window ? IIFE быть изолированным от глобальной области действия? Являются ли функции x и y также свойствами глобального объекта window ?

Кроме того, даже если я использую put var h = ... в начале:

var h = (function(){

    var x = function(){
        alert('hi!');
    }

    var y = function(){
        alert("hi again!");
    }

    this.show = function(){
        alert("This is show function!");
    }

})();

this по-прежнему относится к объекту окна - я могу просто вызвать show () из глобальной области! Почему?

8
задан Bergi 8 September 2014 в 17:37
поделиться