(function(global ){
function a(){
console.log("execute a");
}
var c = {
message: "this is message",
doSomething1: function(){
a();
},
doSomething2: function(){
this.doSomething1();
},
doSomething3: function(){
c.doSomething1();
}
}
global.GlobalObject = c;
})(this);
a(); // error
c.doSomething(); // error
GlobalObject.doSomething1(); // "a"
GlobalObject.doSomething2(); // "a"
GlobalObject.doSomething3(); // "a"
console.log(c.message); // error
console.log(GlobalObject.message); // "a"
外から this を渡して使うのは node環境とブラウザ実行環境他でも使えるようにするため(だと思う)
つまりブラウザで実行される場合、 "global" は "window" になるので 実際は window.GlobalObject が作られる。
参考にしたのは vue.js