函数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.事件、对象还是指向调用者