JavaScript中this的指向问题

简介: this的指向问题

this的指向问题
this是一个在运行时才进行绑定的引用,在不同的情况下它可能会被绑定不同的对象
this 永远指向最后调用它的那个对象

函数调用模式:当一个函数不是一个对象的属性,直接作为函数来调用时,this指向全局对象
方法调用模式:当一个函数作为一个对象的方法来调用时,this指向这个对象
构造器调用模式:如果一个函数使用new调用时,函数在执行前会创建一个新的对象,this就指向这个新的对象
如何改变this的指向?
使用ES6箭头函数,箭头函数不绑定this,箭头函数的this使用指向函数定义时的this
在函数内部定义一个变量_this保存this
使用 apply、call、bind
new 实例化一个对象
this绑定的优先级:new绑定优先级 > 显示绑定优先级 > 隐式绑定优先级 > 默认绑定优先级
this是一个在运行时才进行绑定的引用,在不同的情况下它可能会被绑定不同的对象
this 永远指向最后调用它的那个对象

函数调用模式:当一个函数不是一个对象的属性,直接作为函数来调用时,this指向全局对象
方法调用模式:当一个函数作为一个对象的方法来调用时,this指向这个对象
构造器调用模式:如果一个函数使用new调用时,函数在执行前会创建一个新的对象,this就指向这个新的对象
如何改变this的指向?
使用ES6箭头函数,箭头函数不绑定this,箭头函数的this使用指向函数定义时的this
在函数内部定义一个变量_this保存this
使用 apply、call、bind
new 实例化一个对象
this绑定的优先级:new绑定优先级 > 显示绑定优先级 > 隐式绑定优先级 > 默认绑定优先级

目录
相关文章
|
数据可视化 API 开发者
通俗易懂:一步步教你 Flask 项目自动生成 API 文档
Flasgger,作为一款强大的 Flask 扩展,自动从 Flask 应用中提取并生成 OpenAPI 规范文档,配备 SwaggerUI,为开发者提供了一条快捷通道,让 API 的文档编制和交互式测试变得简单易行。Flasgger 的设计原则是简化开发流程,通过与 Flask 框架的无缝整合,让开发者可以更专注于应用逻辑的构建。
|
6月前
2025年阿里云域名备案流程(图文详细教程)
本文详细介绍了2025年阿里云域名备案的全流程,包括注册阿里云账号、企业实名认证、购买服务器、创建域名信息模板、购买域名、域名备案及查询备案号等步骤。通过图文结合的方式,清晰展示了每个环节的操作方法和注意事项,帮助用户顺利完成域名备案。文章强调了域名备案的前提是国内需有一台服务器,并提供了具体配置建议,同时提醒用户注意邮箱验证和短信核验等关键步骤,确保备案顺利通过。
7768 13
|
前端开发 JavaScript 开发者
【Web 前端】彻底告别“this”指向困扰:从零开始掌握 JavaScript 中“this”的奥秘
【8月更文挑战第23天】在 JavaScript 中,`this` 关键字的指向是根据其调用上下文动态确定的,这对于 Web 前端开发者而言是一项核心技能。本文通过多个示例解释了 `this` 的指向规则:在对象方法中指向该对象,在独立函数中指向全局对象或 `undefined`,在事件处理器中指向触发事件的 DOM 元素,在构造函数中指向新创建的对象。此外,还介绍了一些技巧,如使用箭头函数、`bind` 方法以及在事件处理器中显式保存 `this` 的引用,以帮助开发者更好地理解和控制 `this` 的指向。
201 1
|
8月前
|
人工智能 前端开发 JavaScript
详解智能编码在前端研发的创新应用 | 领通义灵码蛇年红包封面
详解智能编码在前端研发的创新应用 | 领通义灵码蛇年红包封面
|
缓存 JSON JavaScript
深入理解RESTful API设计原则与最佳实践
- REST是一种基于HTTP的Web服务设计风格,强调资源、统一接口和无状态性。 - 设计原则:统一接口(资源标识、操作、自描述消息、无状态),资源中心,标准方法,分层系统和缓存。 - 最佳实践:版本控制、JSON格式、有意义的状态码、HATEOAS和安全性(HTTPS,认证,授权)。 - 示例:使用Node.js和Express实现用户管理API,包括GET、POST、PUT和DELETE操作,展示资源操作的基本实现。 代码示例展示了如何创建、读取、更新和删除用户资源,以及处理HTTP状态码和错误情况。实际应用时,需进一步完善安全和性能优化。
2052 0
|
存储 人工智能 缓存
Fluid: 让大数据和 AI 拥抱云原生的一块重要拼图
如何驱动大数据、AI 应用在云原生场景下高效运行是一个既有理论意义又具应用价值的重要挑战性问题,为系统化解决相关问题,学术界和工业界密切合作,南京大学 PASALab 副研究员顾荣博士、阿里云容器服务高级技术专家车漾、Alluxio 项目创始成员范斌博士联合推动发起了 Fluid开源合作项目。
Fluid: 让大数据和 AI 拥抱云原生的一块重要拼图
|
文字识别 Oracle 关系型数据库
|
SQL Oracle 关系型数据库
oracle(PL/SQL)表操作:创建表时检查数据库是否存在该表,若存在删除再创建
Technorati 标签: 在PL/SQL中创建表之前判断表是否存在 如果有就删除表的执行语句的书写   由于才开始使用PL/SQL来进行Oracle的客户端操作,由于以前使用sql 2005 来执行“创...
1400 0