位置: 编程技术 - 正文

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)

  • 前一年度进项税少记了怎么办
  • 个税手续费返还要交增值税吗
  • 递延所得税抵消分录
  • 离职员工个税申报时员工状态依然是雇员
  • 工会筹备金需不需要计提
  • 免征企业所得税的有
  • 小规模电子发票一张可以开多少金额
  • 总产值和主营业务收入
  • 申报个税的收入是什么收入
  • 企业所得税季度申报
  • 农产品销售发票可以抵扣吗?
  • 实际利率法的计算过程
  • 银行代扣出口快递费用
  • 专利权转让的净收益计入
  • 净水设备配件计算方法
  • 买烟酒开专票可以抵税吗
  • 商业保险和交强险区别
  • 如何确定增值税
  • 哪几种跨省邮寄发票是违法的?
  • 企业的资金怎么使用
  • 建安类增值税专用发票什么时候改的
  • 企业支付宝收款码怎么申请
  • 为什么红字信息查不到
  • 企业开增值税普通发票 电子版
  • 怎么把公司账户的钱转到个人账号
  • mac怎么设置屏幕保护壁纸
  • 不能抵扣的费用
  • 常见的无线网络技术有
  • 计提工资时怎么做账
  • mt-mon.exe
  • 由于找不到msvcr120.dll,无法继续执行代码什么意思
  • 存货正常报废账务处理
  • kms.exe
  • php输入输出
  • 低值易耗品费用账务处理
  • vue click触发两次
  • wordpress自定义api
  • laravel5.4生成验证码的代码
  • 外币借款业务的特点包括
  • 以摊余成本计量且其变动计入当期损益
  • php框架选择2021
  • 递延收益会计科目的账务处理
  • html表格用法
  • nodejs搭建http服务器接收请求
  • 模型参数是什么意思
  • php递归算法经典题目
  • phpstorm创建php文件
  • 固定资产盘盈、盘亏的账务处理?
  • 对方公司开收据盖什么章
  • mongodb4
  • 外出经营税收缴纳
  • 个人所得税减免项目有哪些
  • 毛利率在餐饮中的应用
  • 车船税和保险在一张发票怎么做账
  • 公司贷款 利息
  • 一般纳税人报税时间每月的多少号
  • 施工企业预估成本怎么算
  • 研发支出怎么结转到管理费用
  • 电子发票服务平台怎么下载发票
  • 怎么从会计小白做到总账会计
  • 直接计算法是依据零件图样上给定的尺寸
  • sql 关系数据库
  • mysql5.7.17 zip 解压安装详细过程
  • windows 2003 iis+php5+mysql+phpmyadmin 详细安装配置
  • win10预览版21301bug
  • win10启动很慢怎么办
  • 无法安装windows xp
  • win8.1技巧
  • win8系统没有自带的游戏吗
  • rhel6.5安装
  • nodejs获取客户端ip地址
  • android开发环境安装步骤
  • 批处理 /b
  • unity怎么设置多个关卡
  • JAVAscript字符串类型单引号和双引号意一样吗
  • 安卓的所有权
  • python django 项目框架图
  • 美国对中国纺织服装关税
  • 中国税务网络版
  • 个人所得税年申报与月申报区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设