JS的this指向
this是调用的时候才确定下来的
- 默认指向全局变量window
var a = 1
function test () {
console.log(this.a)
}
test()//不带任何引用形式去调用函数,默认指向全局变量window
- new 调用时值得是被构造的对象
var a = 1
function test (a) {
this.a = a
}
var b = new test(2)//被new的test为构造函数,构造函数里的this指向的就是被new出来的新对象
console.log(b.a)
3.call,apply调用,指向我们指向的对象
var a = 1
function test () {
console.log(this.a)
}
var obj = {
a: 2,
test
}
var testCopy = obj.test
testCopy.call(obj)
//test.call(xxx) / test.apply(xxx) / test.bind()
4.对象调用
var obj={
a:1,
b:function(){
alert(this.a);
}
}
var fun=obj.b;
//等价于var fun=function(){alert(this.a)}
//如果var fun=obj.b(),那么就是调用,此时this指向obj,此时弹出1
fun(); //没有引用调用,this指向全局变量window,此时弹出undefined