JavaScript中this关键字的四种指向场景详解

作者:半夏时间:2026-10-29 09:21:07浏览:582

本文详细解析JavaScript中this关键字的四种核心指向场景:全局环境下的window指向、对象方法中的实例指向、通过apply或call改变函数执行上下文,以及new构造函数中的新对象指向。结合具体代码示例,帮助开发者准确理解并掌握this在不同编程情境下的行为规则。

本文通过具体实例深入解析JavaScript中this关键字的使用规则,旨在为读者提供清晰的参考与学习素材。

指向全局对象Window

一、指向全局对象Window

当this出现在全局变量或全局函数的定义环境中时,它默认指向全局对象Window。


alert(this) //返回 [object Window]

指向所属对象(含闭包特殊情况)

二、指向所属对象(含闭包特殊情况)


function sayHello(){
  alert(this);
}
sayHello();

在全局作用域中,this指向Window;而在某个对象的方法内部,this指向该对象本身。需要注意的是,如果在对象方法中使用了闭包(即嵌套函数),内部闭包中的this通常会重新指向Window,除非通过特定方式绑定。


var user="the Window";
var box={
  user:'the box',
  getThis:function(){
    return this.user;
  },
  getThis2:function(){
    return function (){
      return this.user;
    }
  }
};
alert(this.user);//the Window
alert(box.getThis());//the box
alert(box.getThis2()());
//the Window (由于使用了闭包,这里的this指向window)
alert(box.getThis2().call(box));
//the box 对象冒充(这里的this指向box对象)

使用apply或call改变this指向

三、使用apply或call改变this指向


function sum(num1, num2){
  return num1+num2;
}
function box(num1, num2){
  return sum.apply(this, [num1, num2]);
  //this 表示window的作用域 box冒充sum来执行
}
console.log(box(10,10)); //20

使用new关键字创建对象

四、使用new关键字创建对象


function Person(){
   console.log(this) //将 this 指向一个新建的空对象
}
var p = new Person();

希望上述关于JavaScript程序设计中的this用法解析,能对读者的学习与实践有所帮助。

作者最新文章