引言
在 JavaScript 编程的世界里,this 是一个既基础又令人困惑的概念。它看似简单,却常常在不经意间'背叛'我们的预期;它灵活多变,却又遵循着一套严格的规则。尤其当与 call、apply、bind 以及 ES6 引入的箭头函数结合时,this 的行为变得更加微妙而强大。
本文将结合代码,对 this 的机制进行一次全面、深入且生动的剖析。我们将还原其技术含义,并通过大量示例揭示背后的原理。无论你是初学者还是资深开发者,相信都能从中获得新的洞见。
一、核心内容
我们可以将 this 问题拆解为几个核心命题:
this可以被覆盖bind用于定时器中绑定this,延迟执行call/apply可指定this指向,并立即运行that = this利用作用域链保存this- 箭头函数没有自己的
this,而是继承父级作用域的this
接下来,我们将围绕这五点展开详细论述。
二、this 的默认行为:谁调用,就属于谁
在深入高级技巧前,必须先理解 this 的默认绑定规则。
1. 全局上下文中的 this
在非严格模式下,全局作用域中的 this 指向全局对象(浏览器中是 window,Node.js 中是 global):
console.log(this === window); // true (浏览器)
在严格模式下,全局函数中的 this 为 undefined:
'use strict';
function f() { console.log(this); }
f(); // undefined
2. 对象方法中的 this
当函数作为对象的方法被调用时,this 指向该对象:
const obj = { name: 'Alice', () { .(.); } };
obj.();


