码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-09-27 21:22:04      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:def   window   length   bind   调用   关联   使用   修改   数据类型   

  • 当调用函数时,除了传入在函数定义中显式声明的参数以外,同时还传入两个隐式参数: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方法不会修改原始函数,而是创建了一个全新的函数。

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

标签:def   window   length   bind   调用   关联   使用   修改   数据类型   

原文地址:https://www.cnblogs.com/itxcr/p/11600183.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!