美文网首页
从函数调用读懂this的指向

从函数调用读懂this的指向

作者: 小龙虾Julian | 来源:发表于2020-04-23 14:06 被阅读0次
    1、ES5中JS的函数有3种调用方式

    (1)func(param1, param2)
    (2)obj.child.method(param1, param2)
    (3)func.call(context, param1, param2)
    我们常用和常见的是前两种方式,但实际上前两种都可以转换成第三种,如:
    func(param1, param2) ——> func.call(undefined, param1, param2)
    obj.child.method(param1, param2) ——> obj.child.method.call(obj.child, param1, param2)
    于是,this就是第三种情况中的context

    2、实例
    function func(){
        console.log(this)
    }
    func()
    

    等价于:

    function func(){
        console.log(this)
    }
    func.call(undefined)     // window
    

    解析:按理说this指向的就是undefined,但是浏览器有一条规则:如果你传的 context 就是 null 或者 undefined,那么 window 对象就是默认的 context(严格模式下默认 context 是 undefined),因此上面输出的是 window。

    3、总结:

    (1)this就是call一个函数时传入的context
    (2)如果所给函数的调用形式不是call形式,可以按照1中的情况进行转换

    相关文章

      网友评论

          本文标题:从函数调用读懂this的指向

          本文链接:https://www.haomeiwen.com/subject/opxaihtx.html