this
このコンテキストでキーワードがどのように機能するかを理解しようとしています。
function Person(name) {
this.name = name;
this.sayName = function() {
alert('My name is ' + this.name);
};
}
var p = new Person('Smith');
p.sayName(); // 'My name is Smith'
var q = p;
q.sayName(); // 'My name is Smith'
q = p.sayName;
q(); // 'My name is' ???
最後の例で「Smith」が取り上げられていないのはなぜですか?
q が単に関数を指しているためですか (つまり、メソッドが属するオブジェクトはこのコンテキストでは認識されません)。q はグローバル空間にあるのでthis
、関数内でグローバルですか (つまり、sayName() の呼び出し元はグローバル空間またはウィンドウですか)?