JS中的this理解

在JS中,this是动态绑定的,而java等其他面向对象的语言中,this关键字的含义是明确具体的,他们指代当前对象,称为 编译期绑定

JS中的this是 运行期绑定

此时,this可以是 全局变量,当前对象或者任意对象—-而这完全取决于 函数的调用方式

几种调用方式:

  1. 作为对象调用,函数可以作为某个对象的方法调用,这时this指向这个上级对象

  2. 作为函数调用,纯粹的函数调用,这时this代表全局,一般是window

  3. 作为构造函数调用.所谓构造函数,就是通过这个函数生成一个新对象(object),这时,this就指这个新对象

  4. 使用apply和call调用,因为JS中函数也是对象,自然也就拥有方法,apply和call就是函数对象的方法.它们允许切换函数执行的上下文环境context—即this的绑定对象

导致this含义如此丰富的原因是:JS中的函数既可以被当作普通函数执行,也可以作为对象的方法执行

一个函数被执行时,

  • 首先创建一个 执行环境ExecutionContext

       函数的所有行为均发生在此执行环境中
    
      构建该执行环境时,JS首先会创建arguments变量,它包含了调用函数时传入的参数,
    
  • 然后创建 作用域链.

  • 初始化变量

     首先初始化函数的形参表,其值为arguments变量中对应的值(若arguments中没有对应值,则该形参初始化为undefined)
    

prototype中的this不会改变

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值