JavaScript中this关键字用法实例分析

作者:拾光

时间:2026-10-22

浏览:156

本文通过多个代码实例深入解析JavaScript中this关键字的指向规则。文章详细说明了普通函数调用、对象方法调用以及构造函数中this的不同行为,特别探讨了函数return值对this指向的影响,并补充了严格模式下this默认为undefined的特性,帮助开发者准确理解并应用这一核心概念。

文章目录

this关键字基础指向分析

本文通过具体代码示例,系统梳理了JavaScript中this关键字的使用场景与指向逻辑,旨在为读者提供清晰的参考。

例1:


function a(){
  var user = "yao";
  console.log(this.user);//undefined
  console.log(this);//window
}
a();

该写法在逻辑上等同于:


function a(){
  var user = "yao";
  console.log(this.user);//undefined
  console.log(this);//window
}
window.a();

此时,this指向全局对象window。

示例2:


var o = {
  user:"yao",
  fn:function () {
    console.log(this.user);//yao
  }
}
o.fn();

在此场景下,this指向对象o。

示例3:


var o = {
  user:"yao",
  fn:function () {
    console.log(this.user);//yao
  }
}
window.o.fn();

这里的this同样指向对象o。


var o = {
  a:10,
  b:{
    a:12,
    fn:function () {
      console.log(this.a);//12
    }
  }
}
o.b.fn();

而在嵌套对象的方法中,this指向的是包含该方法的最内层对象b。

示例4:

函数分离调用时的this指向


var o = {
  a:10,
  b:{
    a:12,
    fn:function () {
      console.log(this.a);//undefined
      console.log(this);//window
    }
  }
};
var j = o.b.fn;
j();

综合上述情况,可以得出以下结论:

this的指向始终取决于最终调用该函数的对象。

当函数执行过程中遇到return语句时,情况会有所变化:

示例5:

构造函数中return对this的影响


function fn(){
  this.user = "yao";
  return {};
}
var a = new fn;
console.log(a.user);//undefined

示例6:


function fn(){
  this.user = "yao";
  return function(){};
}
var a = new fn;
console.log(a.user);//undefined

示例7:


function fn(){
  this.user = "yao";
  return 1;
}
var a = new fn;
console.log(a.user);//yao

示例8:


function fn(){
  this.user = "yao";
  return undefined;
}
var a = new fn;
console.log(a.user);//yao

如果构造函数返回一个对象,this将指向该返回的对象。


function fn(){
  this.user = "yao";
  return null;
}
var a = new fn;
console.log(a.user);//yao

尽管null在JavaScript中被归类为对象类型,但在使用new调用构造函数时,this依然指向新创建的实例。

严格模式下的this行为

补充说明:

在启用"use strict"严格模式的情况下,this的默认值不再是window,而是undefined。

如需了解更多JavaScript相关知识,建议查阅本站专题:《javascript面向对象入门教程》、《JavaScript常用函数技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》。

希望本文的解析能对大家的JavaScript编程实践有所帮助。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章