函数this调用

2019-10-09  本文已影响0人  真是个非常帅气的昵称呢

函数一共有6种调用方式

    // 1.普通函数调用,this指向window
    function fn(){
      console.log('被调用了',this)
    }
    fn()
    // 2.定时器函数,this指向window
    setTimeout(function(){
      console.log('定时器')
    },1000)
    // 3.立即执行函数,this指向window
    (function(){
      console.log('立即执行',this)
    })()
    // 4.对象方法调用,this指向该方法所属对象
    var obj={
      say:function(){
        console.log('对象方法调用',this)
      }
    }
    // 5.构造函数调用,this指向实例对象,原型对象里的方法也指向实例对象
    function Person(){
      console.log('构造函数'+this)
    }
    Person.prototype.eat=function(){
      console.log('构造函数原型对象'+this)
    }
    var p=new Person()
    p.eat()
    // 6.绑定事件函数,this指向绑定事件对象
    btn.onclick=function(){    }

严格模式下this的指向问题

1.以前在全局作用域函数中的this指向window;严格模式下this指向undefined
2.以前构造函数不加new也可以调用,当做普通函数,this指向全局对象;严格模式下,如果不加new调用构造函数,this会报错
3.new实例化的构造函数只想创建的对象实例
4.定时器this还是指向window
5.事件、对象还是指向调用者

上一篇 下一篇

猜你喜欢

热点阅读