第三十七关:我是谁?

任务目标:理解最让人头晕的关键字 this

🦸‍♂️

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();