新闻中心

js中this的六种模式

2025-11-10
浏览次数:
返回列表
this的指向取决于函数调用方式,共六种绑定模式:1. 全局环境中this指向window(浏览器)或global(Node.js);2. 独立调用时非严格模式指向全局对象,严格模式为undefined;3. 作为对象方法调用时this指向调用者;4. 构造函数中this指向新创建的实例;5. 显式绑定通过call、apply、bind指定this值;6. 箭头函数的this继承外层作用域,不可被显式改变。关键在于调用方式而非定义位置。

js中this的六种模式

在 J*aScript 中,this 的指向并不是固定不变的,它的值取决于函数是如何被调用的。理解 this 的指向是掌握 JS 核心机制的关键之一。以下是 this 的六种常见绑定模式:

1. 全局环境中的 this

在全局执行环境中(浏览器中),无论是否严格模式,this 都指向全局对象。

  • 浏览器中,this 指向 window
  • Node.js 环境中,this 指向 global
例子:
console.log(this === window); // true(浏览器中)

2. 函数独立调用

当一个普通函数被直接调用时,this 的指向取决于是否启用严格模式。

  • 非严格模式下:this 指向全局对象(window)
  • 严格模式下(use strict):this 为 undefined
例子:
function foo() {
  console.log(this);
}
foo(); // 非严格模式:window;严格模式:undefined

3. 对象方法中的 this

当函数作为对象的方法被调用时,this 指向该对象。

  • 谁调用了方法,this 就指向谁
例子:
const obj = {
  name: 'Alice',
  greet() {
    console.log(this.name);
  }
};
obj.greet(); // 输出 'Alice',this 指向 obj

4. 构造函数中的 this

使用 new 调用函数时,this 指向新创建的实例对象。

UQ云商B2B2C系统 UQ云商B2B2C系统

UQCMS云商是一款B2B2C电子商务软件 ,非常适合初创的创业者,个人及中小型企业。程序采用PHP+MYSQL,模板采用smarty模板,二次开发,简单方便,无需学习其他框架就可以自行模板设计。永久免费使用,操作简单,安全稳定。支持PC+WAP+微信三种浏览方式,支持微信公众号。

UQ云商B2B2C系统 1 查看详情 UQ云商B2B2C系统
  • 构造函数内部的 this 代表即将创建的新对象
  • new 操作会创建一个新对象并将其绑定到 this
例子:
function Person(name) {
  this.name = name;
}
const p = new Person('Bob');
console.log(p.name); // 'Bob'

5. 显式绑定(call、apply、bind)

通过 call、apply 或 bind 方法可以显式指定 this 的指向。

  • call(arg, ...args):立即调用,参数逐个传入
  • apply(arg, [args]):立即调用,参数为数组
  • bind(arg):返回新函数,this 固定为指定对象
例子:
function sayHi() {
  console.log(this.name);
}
const user = { name: 'Tom' };
sayHi.call(user); // 'Tom'

6. 箭头函数中的 this

箭头函数没有自己的 this,它的 this 继承自外层作用域(词法作用域)。

  • 不会被 call、apply、bind 改变
  • 始终指向定义时所在上下文的 this
例子:
const obj = {
  name: 'Lucy',
  regularFunc: function() {
    const arrowFunc = () => {
      console.log(this.name); // 'Lucy'
    };
    arrowFunc();
  }
};
obj.regularFunc(); // 箭头函数的 this 指向外层函数的 this

基本上就这些。掌握这六种模式,能帮你准确判断 this 在各种场景下的指向。关键是看函数如何被调用,而不是如何定义。不复杂但容易忽略细节。

以上就是js中this的六种模式的详细内容,更多请关注其它相关文章!


# 如何使用  # 双辽网络推广和营销  # 钟祥通信建设招聘网站  # seo网站排名优化哪家好  # 教育行业seo推广宣传  # 抖音禁止seo吗  # 企业网站怎么推广好做的  # 沧州全网营销推广系统  # 农产品营销推广模式分析  # 武清区公司网站建设  # 新乡网站霸屏推广招商  # 模式下  # 器中  # 它很  # 自己的  # javascript  # 管理器  # 有何  # 有什么  # 绑定  # 六种  # 作用域  # win  # app  # 浏览器  # node  # node.js  # js  # java 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 从J*aScript对象中精确提取指定属性的教程  汽水音乐车机版横屏版7.1 汽水音乐车机版横屏版下载入口  抖音未来赚钱的新趋势 2025年值得关注的变现风口分析  c++中的std::launder有什么实际用途_c++对象生命周期与指针优化  Win10如何清理注册表垃圾 Win10注册表维护与优化指南【慎用】  PHP URL参数传递与500错误调试指南  Python多线程中正确使用sigwait处理SIGALRM信号  蛙漫漫画免费阅读入口_蛙漫官方正版无广告纯净版  composer的"require-dev"部分是用来做什么的?  豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售  Animex动漫社网入口地址 Animex动漫社网正版在线入口  J*a递归快速排序中静态变量导致数据累积问题的解决方案  qq浏览器打开空白页怎么办 qq浏览器启动后显示白屏的解决教程  b站怎么删除评论_b站评论管理与删除操作  J*aScript:在map操作中高效处理空数组  b站赚钱渠道_b站收益来源  Python模块化编程:有效管理依赖与避免循环引用  J*aScript数组对象转换:按指定键分组与值收集  快手官方唯一登录入口 谨防山寨钓鱼网站  自定义Bag-of-Words实现:处理带负号的词汇权重  如何在Python中使用Optional类型处理可变对象并避免Pylint警告  Win11怎么开启省电模式_Win11电池节电模式自动开启  J*a编写用户注册与登录功能_掌握字符串与验证逻辑  哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法  Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】  Node.js中HTML按钮与J*aScript函数交互的正确姿势  Golang如何使用const iota_Go iota常量计数器讲解  J*aScript设计模式实践_j*ascript代码优化  美团外卖商家服务中心入口 美团商家版官网入口  中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】  qq游戏免费畅玩入口_qq游戏电脑版快速启动  J*aScriptWebpack优化_J*aScript构建工具实战  PHP 枚举:根据字符串获取枚举案例的策略与实现  顺丰快件物流信息 官方网站查询入口  AO3最新可访问网址 Archive of Our Own官方在线入口  韩小圈电脑版在线入口_网页版免费登录地址  163邮箱注册官网 免费申请163个人邮箱  wps文字怎么插入目录并自动更新_wps文字如何插入目录并自动更新方法  护手霜蹭到袖口上了如何清洗? 怎样避免留下一圈油印?  智慧团建扫码登录入口 智慧团建扫码登录入口官网版​  如何使用Rector自动化升级旧代码_通过Composer安装和配置Rector进行代码重构  CKEditor 5 自定义构建在React应用中渲染失败的调试与解决  J*aScript教程:根据元素文本内容动态设置背景色  如何更改在 Excel 中打开超链接时的默认浏览器  在VS Code中配置和运行Dart程序的完整步骤  提升屏幕阅读器对“m”时间单位的播报准确性:HTML与CSS组合解决方案  J*aScript实现单选按钮与关联输入框的联动禁用教程  win11怎么查看应用耗电情况 Win11电池设置查看应用能耗排行榜【优化】  Python实时数据流中的动态最值查找策略  千牛数据看板网页版_千牛数据看板网页版访问方法 

搜索