1.默认绑定,就是函数立即执行。
函数立即执行就是指向window,但是如果是node环境,就是指向全局
console.log(this===window);
//true
console.log({}==={})//false
1.1函数的独立调用
function test(){
console.log(this===window);
}
test();
2.隐式绑定规则谁调用就指向谁。
var a = 0;
var obj = {
a:2,
foo:function(){
console.log(this);//指向obj
// 每一个函数的执行都有一个新的this指向
function test(){
console.log(this);//windows
// 这个this和上面的foo函数的this指向不同
// 可能会相同就是都指向windows,但是指向肯定是不同的
}
test();
}
}
obj.foo();
// obj来调用的this 所以this肯定指向obj
//函数的直接调用,this也是指向window
3.call.apply.bind
obj.foo() // 对象调用
bar.call(obj)
bar.apply(obj)
bar.bind(obj)
网友评论