MST

星途 面试题库

面试题:JavaScript中函数不同调用方式下this的指向

请分析以下JavaScript代码中函数调用时`this`的指向,并解释原因: ```javascript function foo() { console.log(this); } const obj = { name: 'example', method: foo }; foo(); obj.method(); ```
31.3万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
  1. foo()调用时this的指向
    • this指向全局对象(在浏览器环境中是window,在Node.js非严格模式下是global,严格模式下为undefined)。
    • 原因:当函数以普通函数的形式调用时(没有通过对象的属性来调用),在非严格模式下,this会默认指向全局对象。在严格模式下,如果没有明确的调用上下文,thisundefined。在这段代码中,foo()是普通函数调用,所以在非严格模式下this指向全局对象。
  2. obj.method()调用时this的指向
    • this指向obj对象。
    • 原因:当函数作为对象的方法被调用时,this指向调用该方法的对象。这里methodobj对象的方法,所以当obj.method()调用时,this指向obj