位置: 编程技术 - 正文

javascript this详细介绍(彻底弄懂js中的this指向)

编辑:rootadmin

推荐整理分享javascript this详细介绍(彻底弄懂js中的this指向),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js function(this),彻底弄懂js中的this指向,javascript的this用法,js中this的作用,如何理解javascript中的this,javascript的this用法,javascript的this用法,如何理解javascript中的this,内容如对您有帮助,希望把文章链接给更多的朋友!

this的值是在运行时确定的

JS中的this究竟代表什么,这是在程序运行时根据上下文环境确定,可以分为以下几种情况。

1. 全局作用域中的this

在全局作用域中,this指向window对象。

在全局作用域中执行var x=5,其实是为window对象创建一个属性x,并令其等于5。

若定义变量时不加var,JS会认为该变量为全局变量,会将其当作window对象的属性。

2. 函数中的this

JS中函数有两种,直接调用的函数称为普通函数,通过new创建对象的函数称为构造函数。

2.1 构造函数中的this

构造函数的this指向它所创建的对象,如:

javascript this详细介绍(彻底弄懂js中的this指向)

2.2 普通函数中的this

普通函数的this指向window对象。 若上述例子,直接执行Perosn函数,则其中this代表window对象,因此该函数执行后会创建一个全局的name。

3. 对象中的this

对象中的this指向当前对象,如:

上述代码中this指向函数getName所属的对象。

但是,如果一个对象的函数中又嵌套了一个函数,这个函数的this指向的却是window,而并不是其外层的对象。

上述示例中,person对象中有一个getName函数,而getName函数内部又有一个函数,这个函数内部的this指向window对象,而非person对象,这是JS的一个bug!一般作如下处理,规避这个bug:

我们在person对象的第一层函数中,将this赋给局部变量that,然后在第二层函数中使用that,此时that指向person对象,可对person的属性进行操作。

注意:若将一个对象中的函数赋给一个变量后,再通过该变量调用这个函数,此时该函数中的this指向window,而非该对象,如下所示:

4. 用call和apply函数给this开挂

这两个函数都能手动指定被调用函数内部的this指向哪个对象。

apply用法

对象A.函数名.apply(对象B, 参数列表); 当对象B作为apply的第一个参数传给apply时,对象A的函数中this就指向了对象B,此时对象A的该函数对this的操作将会作用在对象B上,由此实现了用对象A去调用对象B的函数。

标签: 彻底弄懂js中的this指向

本文链接地址:https://www.jiuchutong.com/biancheng/373590.html 转载请保留说明!

上一篇:浅谈js内置对象Math的属性和方法(推荐)(js内置对象方法有哪些)

下一篇:javascript cookie用法基础教程(概念,设置,读取及删除)(js中cookie)

  • 固定资产报废申请表模板
  • 所得税费用会计准则
  • 商品流通企业都交什么税
  • 其他收益里的政府补助免税吗
  • 小规模首次申请发票张数
  • 一千万人民币可以买多少斤黄金
  • 应付票据与应付账款
  • 当年实现的利润弥补亏损会计分录
  • 费用类都有哪些账户
  • 怎么核算关联企业的借款费用?
  • 当月少计提工资下月怎么处理?
  • 资产报废账务处理资产处置损益
  • 公司向个人借入资金的风险
  • 母子公司可以开具资金占用费
  • 保安公司怎样上保险
  • 帮其他企业推广产品
  • 高新技术企业认定管理办法
  • 进行财产清查
  • 企业外购零部件可以入哪个会计科目核算?
  • 小规模纳税人开专票和普票的区别
  • 残保金和工会经费
  • 出口企业取得失业保险
  • 酒店安装监控费用谁出
  • 电脑右下角弹出网页没有×怎么关闭
  • 动态壁纸怎么设置锁屏
  • php 静态
  • coolmark是病毒吗
  • 预算会计的核算范围
  • 企业发生的利得和损失应计入所有者权益
  • 广告费增值税税目是什么
  • 商品流通企业会计分录
  • 兰萨罗特岛的地理位置
  • 七月份收入
  • 资产负债表应交税费计算公式
  • php demo
  • 如何做架构规划图
  • 二元运算例子
  • Code For Better 谷歌开发者之声——使用谷歌浏览器 Chrome 更好地调试
  • php curl设置cookie
  • Windows7配置启用ca证书
  • 企业怎么可以合理避税?
  • 还贷款的卡有利息吗
  • 建筑施工企业增值税税率调整时间
  • 发票税额打印不全可以入账吗
  • mysql中文乱码怎样用代码解决
  • 分公司开票总公司收款怎么做账
  • 小规模纳税人的企业所得税怎么算
  • 只开发票没有合同也要印花税吗
  • mysql常用命令有哪些
  • 小规模发票跨月冲红怎么纳税申报
  • 进项留抵月末要结转吗
  • 工资里计提五险什么意思
  • 个人发票单位能做账用吗
  • 财务报表未备案可以不填吗
  • 公司进项不够可以退税吗
  • 产品成本包括哪几个部分
  • 房租的发票没有收到,账务处理
  • 已认证未抵扣的发票可以退回红冲吗
  • 会计工作重点工作
  • 委托收款的流程
  • 分享一个简单的故事英语
  • 如何解决局域网问题
  • 偷天换日角色介绍
  • 系统更新win10
  • linux系统崩溃了怎么办
  • win 7系统双独立显卡设置
  • UnityEditor.UI.dll' is in timestamps but is not known in assetdatabase
  • bat批处理执行cmd命令
  • bootstrap页头
  • node 连接sqlserver
  • pyinstaller指定python2
  • python 模块定义
  • ubuntu如何下载
  • 传智播客在线课程
  • jquery网页跳转
  • 使用jquery的步骤
  • javascript零基础入门
  • 怎么在手机开数据那里看用了多少流量
  • 河北省国家税务局长简介
  • 行政事业单位的会计核算以什么为基础
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设