函数调用的方式及其影响this的指向

  • 当调用函数时,除了传入在函数定义中显式声明的参数以外,同时还传入两个隐式参数:arguments 和 this。
    • arguments 参数是传入函数的所有参数的集合。具有length属性,便是传入的参数的个数,通过arguments参数还可以获取那些与函数形参不匹配的参数。在非严格模式下,arguments对象是函数参数的别名,修改arguments对象会修改函数的实参,可以通过严格模式避免修改函数实参。
    • this 表示函数上下文,即与函数调用相关联的对象。函数的定义方式和调用方式决定了this的指向。
  • 函数的调用方式有4中
    1. 作为函数调用
    2. 作为对象的方法调用
    3. 作为构造函数调用
    4. 通过 apply 和 call 方法调用
  • 函数的调用方式影响this的取值
    1. 如果作为函数调用,在非严格模式下,this指向全局对象window;在严格模式下this指向undefined。
      • udnefined 类型是 [object Undefined]
      • 使用该方式获取数据的具体数据类型
        Object.prototype.toString.call(数据)
    2. 作为对象的方法调用,this 通常指向调用的对象。
    3. 作为构造函数调用, this 通常指向新创建的对象(实例对象)。
    4. 通过 call 或 apply 调用, this 指向 call 或 apply 的第一个参数。
  • 箭头函数没有单独的this值,this 在箭头函数创建时确定。
  • 所有函数均可使用 bind 方法,创建新函数,并绑定到 bind 方法传入的参数上。调用bind方法不会修改原始函数,而是创建了一个全新的函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值