ここで、オブジェクトのメンバー関数内の自己実行コード (window/globalScope) で「this」が異なるのはなぜですか?
foo = "Window_foo"
var myobj = {
foo: 'Object_bar',
func: function(){
var self = this;
console.log("outer this.foo " + this.foo);
console.log("outer self.foo " + self.foo);
(function(){
console.log("inner this.foo " + this.foo);
console.log("inner self.foo " + self.foo);
}());
}
}
myobj.func();
以下の出力が得られます。
outer this.foo Object_bar
outer self.foo Object_bar
inner this.foo Window_foo
inner self.foo Object_bar
func は myObj オブジェクトのメンバー関数です。その中の「this」は myObj オブジェクトでなければなりません。それでは、その内部の自己実行関数は、ウィンドウオブジェクトとして「this」をどのように持っていますか?