新闻中心

j*ascript_this关键字的绑定规则

2025-12-02
浏览次数:
返回列表
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

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

极品HTML5网络建站公司模板源码(包含源文件)3.0 极品HTML5网络建站公司模板源码(包含源文件)3.0

1、架构轻盈,完全免费与开源采用轻量MVC架构开发,兼顾效率与拓展性。全局高效缓存,打造飞速体验。 2、让简洁与强大并存强大字段自定义功能,完善的后台开关模块,不会编程也能搭建各类网站系统。 3、顶级搜索引擎优化功能纯静态、伪静态,全部支持自由设置规则,内容、栏目自由设置URL格式。 4、会员、留言、投稿、支付购物神马一个不能少不断升级完善的模块与插件,灵活的组装与自定义设置,满足你的多样需求。

极品HTML5网络建站公司模板源码(包含源文件)3.0 0 查看详情 极品HTML5网络建站公司模板源码(包含源文件)3.0
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外包服务什么意思  # 网站建设推广维辛hfqjwl  # 四种  # 可以选择  # this关键字  # 自定义  # 模式下  # 是在  # 隐式  # 如何用  # 建站  # 绑定  # win  # app  # 浏览器  # java  # javascript 


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


相关推荐: 俄罗斯Yandex免登录入口_Yandex搜索引擎官网一键直达  铁路12306官网网页端快速入口 铁路12306官方首页登录教程  qq邮箱日历功能怎么用_创建日程与会议邀请的技巧  Yandex搜索引擎官方地址 俄罗斯网络世界的主要入口  sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置  单射、满射与双射的关系 一文理清所有逻辑  PHP 枚举:根据字符串获取枚举案例的策略与实现  深入理解J*a合成构造器:何时以及为何阻止其生成  J*aScript设计模式实践_j*ascript代码优化  苹果手机如何防止被恶意App追踪  学习通网页版官方登录 超星学习通电脑端入口指南  不同用户不同价格! 索尼开启账户个性化定价测试  J*aScriptWebpack优化_J*aScript构建工具实战  J*a递归快速排序中静态变量导致数据累积问题的解决方案  Composer的 archive 命令怎么用_快速打包你的PHP项目及其Composer依赖  J*aScript教程:根据元素文本内容动态设置背景色  Gmail邮箱申请注册直达_Gmail邮箱免费注册PC版官网入口2025  怎么在mac上运行html代码_mac运行html代码方法【指南】  C++如何实现单例模式_C++设计模式之线程安全的单例写法  响应式容器内容自动缩放与宽高比维持教程  中兴Axon42Ultra怎样在文件App筛图_iPhone中兴Axon42Ultra文件App筛图【图片筛选】  jQuery Mask 插件中实现电话号码固定前导零的教程  Go Martini框架:动态服务解码后的图片内容  在Socket.IO连接中实现Access Token自动更新与动态重连  126邮箱手机版登录官网2026_126手机邮箱免费入口最新  抖音小游戏合成大西瓜免费秒玩入口链接 抖音小游戏热门合集秒玩网站  漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道  如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧  特斯拉自动驾驶房车计划曝光 原型车将于2027年亮相  京东京造J1和网易云音乐氧气真无线有什么不同_国产电商蓝牙耳机音质对比  Shopware订单对象中获取产品自定义字段的正确方法  Golang如何使用net/url解析URL_Golang URL解析与处理方法  高德地图公交到站提醒失败如何解决 高德提醒权限设置  Mac怎么锁定备忘录_Mac备忘录加密设置教程  顺丰快递查单号物流信息 顺丰快递小程序查询入口  HTML空白字符处理机制:渲染、DOM与编码实践  C++如何比较两个字符串_C++ string compare函数与操作符对比  Win10双系统截图高效法 截屏快捷键速记【技巧】  Composer的 "check-platform-reqs" 命令有什么用_在部署前检查生产环境是否满足Composer依赖需求  夸克浏览器网页版最新地址 夸克浏览器官方入口合集  在J*a中如何在J*a中使用异常机制记录错误日志_异常日志实践经验  AO3官网镜像链接 Archive of Our Own同人文在线浏览  C++如何实现一个智能指针_手动实现C++ shared_ptr的引用计数功能  J*aScript对象创建方式_J*aScript设计模式应用  纯CSS与HTML网格布局的HTML精简策略:SVG与JS方案解析  蛙漫画网页版全站入口 蛙漫热门作品免费浏览  UC浏览器网页版登录入口官网 电脑版网址入口  Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】  Python实时数据流中的动态最值查找策略  俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口 

搜索