一.根据函数内部this的指向不同,可以将函数的调用模式分成4种
- 函数调用模式
- 方法调用模式
- 构造函数调用模式
- 上下文调用模式(借用方法模式)
首先先来分析this指向问题
1.任何函数都有属于自己的this
2.this的指向和函数的调用模式相关,意味着this的指向在函数声明的时候确定不了.
然后分析this指向的思路:
1.this是属于哪个函数的
2.这个函数的调用模式是哪种
接下来,看一下四种调用模式
函数调用模式
如果一个函数不是一个对象的属性时,就是被当做一个函数来进行调用的。此时this指向了window
function fn(){
console.log(this);//指向window
}
fn();
方法调用模式
当一个函数被保存为对象的一个属性时,我们称之为一个方法。当一个方法被调用时,this被绑定到当前对象
var obj = {
sayHi:function(){
console.log(this);//在方法调用模式中,this指向调用当前方法的对象。
}
}
obj.sayHi();//this =>obj
对象.方法名()
obj.fn();
obj.fn2();
obj['fn'] ;
// 总结: .语法、中括号语法,都是属于 方法调用模式
构造函数调用模式
如果函数是通