j*ascript_this关键字的绑定规则


this的指向由运行时动态确定,遵循四种绑定规则:1. 默认绑定指独立函数调用时this指向全局对象(严格模式下为undefined);2. 隐式绑定指函数作为对象方法调用时this指向该对象,但赋值后调用会丢失绑定;3. 显式绑定通过call、apply或bind手动指定this值,其中call和apply立即执行,bind返回新函数;4. new绑定指使用new调用构造函数时this指向新创建的对象。优先级顺序为:new绑定 > 显式绑定 > 隐式绑定 > 默认绑定。

javascript_this关键字的绑定规则

J*aScript 中 this 的指向问题常常让开发者感到困惑,其实它的绑定遵循一套明确的规则。this 的值不是在函数定义时决定的,而是在函数运行时动态确定的。理解 this 的绑定规则,关键在于掌握四种绑定方式:默认绑定、隐式绑定、显式绑定和 new 绑定。

1. 默认绑定(Default Binding)

这是最基础的绑定规则,适用于独立函数调用的情况。

当一个函数被直接调用,没有上下文对象时,this 指向全局对象(在浏览器中是 window,在严格模式下为 undefined)。

例如:
function sayHi() {
  console.log(this);
}
sayHi(); // 非严格模式下输出 window,严格模式下输出 undefined

2. 隐式绑定(Implicit Binding)

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

注意:只有最后一层引用才起作用。

例如:
const person = {
  name: 'Alice',
  greet() {
    console.log(this.name);
  }
};
person.greet(); // 输出 'Alice',this 指向 person

如果将方法赋值给变量再调用,会丢失绑定:

Explainpaper Explainpaper

阅读学术论文的更好方法,你的学术论文阅读助手。

Explainpaper 89 查看详情 Explainpaper
const fn = person.greet;
fn(); // 输出 undefined(非严格模式可能是 window),this 不再指向 person

3. 显式绑定(Explicit Binding)

通过 call、apply 或 bind 方法,可以手动指定函数执行时的 this 值。

  • call:立即执行函数,参数依次传入
  • apply:立即执行函数,参数以数组形式传入
  • bind:返回一个新函数,this 被永久绑定
例如:
function introduce(age) {
  console.log(`I'm ${this.name}, ${age} years old`);
}
const user = { name: 'Bob' };
introduce.call(user, 25); // 输出 "I'm Bob, 25 years old"
introduce.apply(user, [30]); // 输出 "I'm Bob, 30 years old"
const boundFn = introduce.bind(user);
boundFn(28); // 输出 "I'm Bob, 28 years old"

4. new 绑定(New Binding)

使用 new 关键字调用函数(构造函数)时,会创建一个新对象,this 指向这个新对象。

例如:
function Person(name) {
  this.name = name; // this 指向 new 创建的对象
}
const p = new Person('Charlie');
console.log(p.name); // 输出 'Charlie'

这四种绑定规则有优先级:new 绑定 > 显式绑定 > 隐式绑定 > 默认绑定。只要记住这个顺序,就能准确判断 this 的指向。

基本上就这些,不复杂但容易忽略细节。

以上就是j*ascript_this关键字的绑定规则的详细内容,更多请关注其它相关文章!


# 组中  # 济宁seo哪家最好  # 河南seo引擎优化平台培训  # 山东网站推广方法  # 微信群如何做营销推广  # 如何向发廊推广营销  # 辽阳seo网络优化  # 影响网站seo因素  # 衢州抖音推广营销  # 常州seo新站策划  # 关键词排名要第几  # 编程技巧  # 这是  # this关键字  # 中对  # 四种  # 模式下  # 是在  # 隐式  # 递归  # 绑定  # win  # app  # 浏览器  # java  # javascript 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: 空腹吃苹果好吗 苹果空腹摄入指南  todesk如何添加信任设备_todesk信任设备设置教程  蜻蜓FM如何设置移动流量播放  5G和6G的连接密度有什么区别 6G每平方公里能连接多少设备  猫眼电影app如何筛选支持退改签的影院_猫眼电影退改签影院筛选方法  CSS绝对定位与溢出控制:实现背景元素局部显示不触发滚动条  win11资源管理器标签页怎么用 Win11文件管理器多标签高效操作【新功能】  AO3中文入口稳定分享_AO3官网HTTPS看文详解  荣耀Magic7拍照夜景噪点处理_荣耀Magic7相机优化  CSS如何控制元素外边距_margin实现布局间隔  c++如何掌握指针的核心用法_c++指针入门到精通指南  《360浏览器》设置摄像头权限方法  画质怪兽120帧安卓和平精英免费版  cad视图选项卡不见了怎么办_cad视图标签恢复显示方法  如何在vscode中关闭it环境  使用Selenium在无头Chrome中交互动态菜单和复选框的策略  电脑从睡眠中被自动唤醒怎么办_Windows唤醒源事件查看与禁用【解决】  如何在Golang中处理表单文件上传_Golang 表单文件上传示例  谷歌浏览器官方镜像获取方法_谷歌浏览器网页版入口极速直达  顺丰快递单号查询寄件人 顺丰寄件人查询入口  《雷电模拟器》自动点击设置方法  汽水音乐网页端访问 汽水音乐官方网页直达  深入理解随机递归函数的确定性:内部节点、叶节点与时间复杂度分析  胃动力不足?试试这5个调理方法  为什么XML解析器对大小写敏感? 理解XML规范中的大小写规则与最佳实践  word文档行距怎么调?word文档调行距的操作步骤  处理含命名空间的XML文件 Power Query中的高级技巧  《雷电模拟器》截图方法介绍  QQ网页版官方账号登录入口 QQ网页版网页版入口快速导航  奥克斯空调不制热啥毛病_奥克斯空调不制热原因分析及解决技巧  J*aScript文本高亮功能优化:解决多词匹配错误与精确分割策略  美发店速赢秘籍  邮政快递寄件查询入口 邮政快递收件查询入口  毒蘑菇VOLUMESHADER_BM官网首页登录入口 毒蘑菇VOLUMESHADER_BM官网首页登录入口说明  steam缓存文件在哪儿_steam缓存文件的路径查找方法与结构说明  微信步数怎么刷_微信步数快速提升技巧  edge浏览器怎么修改语言为中文_Edge界面语言切换教程  AngularJS动态内容中DOM元素查找的时序问题及$timeout解决方案  Lar*el Dusk 测试中管理浏览器权限:以剪贴板访问为例  安居客移动经纪人怎么设置自动回复?-安居客移动经纪人设置自动回复的方法  Win10截图远程协助 Win10远程桌面截屏法【场景应用】  食品生产用水只要符合国家规定的生活饮用水卫生标准就可以吗  苹果官网国补入口在哪  Word如何将文字快速转成表格 Word文本转换成表格功能使用技巧【效率】  漫蛙漫画官方版直通入口 2025漫蛙漫画免注册访问说明  苹果如何下载nanobanana  汽水音乐网页版登录 汽水音乐网页端官方入口  PSD转AI文件的简单方法  《花瓣》创建专辑方法  行者app怎样导出日志 

 2025-12-02

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.