Js中this指向的问题

114 阅读1分钟

js this指向问题

在函数中直接使用

     function get(content){
         console.log(content)
     }
     get('您好')//可以看作下列语句的语法糖
     get.call(window,'您好')

函数作为对象的方法被调用(谁调用 就指向谁)

    var person = {
        name:'张三',
        run:function(time){
            console.log(`${this.name}在跑步 最多${time}min就不行了`)
        }
    }
    person.run(30)//可以看作下列语句的语法糖
    person.run.call(person,30)

例题

    var name=222
       var a ={
           name:111,
           say:function(){
               console.log(this.name)
           }
       }
       var fun = a.say
       fun() //fun,call(window) 222
       a.say()//a.say.call(a) 111

       var b={
           name:333,
           say:function(fun){
               fun()
           }
       }
       b.say(a.say)//传入之后等价于  fun()=a.say 等价于第一种 222
       b.say = a.say
       b.say()//b调用 等于console.log(this.name)复制到b的say方法中 即333