我试图了解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' ???
为什么最后一个例子没有选择“史密斯”?
是不是因为 q 只是指向一个函数(即该方法所属的对象在此上下文中无法识别)?既然 q 在全局空间中,this
那么函数内部是全局的吗(即 sayName() 的调用者是全局空间还是窗口)?