this

作者: 酒暖花深Q | 来源:发表于2020-09-11 16:33 被阅读0次

    this在各个场景中的取值是在执行的时候确定的,而不是在定义的时候
    callbind 都是改变this的指向 但是call直接调用就执行 。bind会返回给新的函数执行

     function fn(){
                console.log(this) 
            }
            fn()  //window
            fn.call({x:100})  //{x: 100}
    
            const fn1 = fn.bind({x:200})
            fn1()  //{x: 200}
    
     const zhangsan = {
                name:'张三',
                saiHi(){
                    console.log(this)
                },
                wait(){
                    setTimeout(function(){
                        console.log(this)
                    })
                }
            }
            zhangsan.saiHi()  //当前对象this === {name: "张三", saiHi: ƒ, wait: ƒ}
            zhangsan.wait() //this === Window 
    

    原因是setTimeout()是重新定义的一个函数 ,它是作为一个普通函数被执行而不是 zhangsan的方法被执行

    箭头函数的this指向当前的对象它是取得上级作用域的值
     const lisi = {
               name:'李四',
               saiHi(){
                    console.log(this)
                },
                wait(){
                    setTimeout(() =>{  
                        console.log(this)
                    })
                }
           }
           lisi.saiHi()  //当前对象this === {name: "李四", saiHi: ƒ, wait: ƒ}
           lisi.wait() //this === {name: "李四", saiHi: ƒ, wait: ƒ}
    

    相关文章

      网友评论

          本文标题:this

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