🦸♂️
JS 队长
this 是 JS 里最变幻莫测的词。
它的含义取决于它是怎么被调用的,而不是它在哪里定义的。
🏠 情况一:在对象方法里
如果是在对象的方法里调用,this 指的就是这个对象自己。
var person = {
firstName: "John",
sayHi: function() {
return this.firstName; // this 就是 person
}
};
🌍 情况二:在全局里
如果单独使用,或者在普通函数里(非严格模式),this 指的是全局对象 (Window)。
function whoAmI() {
return this; // 在浏览器里,这是 [object Window]
}
🖱️ 情况三:在事件里
在 HTML 事件中,this 指的是接收事件的那个元素。
🎮 身份鉴定
下面的代码里,this.name 会输出什么?
var hero = {
name: "Iron Man",
attack: function() {
return this.name + " 正在攻击!";
}
};
hero.attack();