厌倦了猜测“这”指的是什么吗?

2025-06-08

厌倦了猜测“这”指的是什么吗?

什么是this

如果您是 JavaScript 新手,那么遇到关键字的概念只是时间问题thisthis关键字是当前代码正在执行的 JavaScript 上下文对象。JavaScript 代码执行时,是在特定的执行上下文中运行。浏览器首次加载脚本时,它处于全局执行上下文中。但是,一旦调用函数,就会形成一个新的执行上下文并将其推送到调用堆栈。

一开始,确定 的值this可能感觉有点像变魔术,让你console.log()在代码中抛出 。然而,你只需要遵循几条规则就能弄清楚this指的是什么。首先要记住的最重要的一点是, 的值this取决于函数的调用方式。查看函数的定义位置对你没有帮助。

确定价值的规则this

首先,我们检查new在调用函数时是否使用了关键字。如果new使用了,this函数内部将引用new运行时创建的全新对象Object.Create()

其次我们看看在调用函数时是否使用了apply、call或bind。this函数内部将引用作为参数传入的对象来apply、call或bind。

第三,如果将函数作为方法调用,例如 obj.method() — this将引用该函数所属的对象。

否则this为全局对象。在浏览器中,它是window对象。如果在严格模式下 ( 'use strict'),this它将undefined代替全局对象。

需要注意的是,ES6 箭头函数会忽略上述所有规则。它们没有自己的this,因此this是由词法函数决定的。这意味着 JavaScript 会查看其周围的父级作用域来确定this所引用的内容。

为什么this甚至重要?

如果我们思考一下我们通常编写函数的原因,就会发现函数使得封装和复用逻辑变得容易。this关键字 让我们决定调用函数时所需的上下文。通过使用 ,this我们可以在不同的上下文或不同的对象中复用函数或方法。

如果您有任何问题、评论或反馈,请告诉我。关注我,每周更新 JavaScript、React、Python 和 Django 的文章!

鏂囩珷鏉ユ簮锛�https://dev.to/guin/tired-of-guessing-what-this-is-referring-to-3nfk
PREV
使用真实示例编写 Django 数据迁移 django-test-migrations
NEXT
在 React.js 中滚动时隐藏菜单