博主分享的这几个例子来自JS小黄书, 帮助大家理解JS的绑定原理
前两个是可以隐式绑定的例子
function foo(){
console.log(this.a);
}
var obj = {
a:2,
foo: foo
};
obj.foo(); // 2
function foo(){
console.log(this.a);
}
var obj2 = {
a:42,
foo: foo
}
var obj1 = {
a: 2,
obj2: obj2
};
obj1.obj2.foo(); // 42
隐式丢失
function foo(){
console.log(this.a);
}
var obj = {
a:2,
foo: foo
}
var bar = obj.foo; // 函数别名!
var a = "gloabal";
bar(); // "global"
function foo(){
console.log(this.a);
}
function doFoo(fn){
fn();
}
var obj = {
a:2,
foo: foo
};
var a = "global";
doFoo(obj.foo); // "global"
回调函数丢失this绑定是非常常见的
除了隐式绑定还有显式绑定和硬绑定