1.忽略显示绑定
apply/call/bind: 当传入null/undefined
function foo() {
console.log(this)
}
foo.apply("abc")//this指向abc字符串
foo.apply({})//this指向空对象
// apply/call/bind: 当传入null/undefined时, 自动将this绑定成全局对象
foo.apply(null)//this指向window
foo.apply(undefined)//this指向window
var bar = foo.bind(null)
bar()//this指向window
2.间接函数引用
创建一个函数的间接引用,这种情况使用默认绑定规则
1.赋值(obj.foo=obj1.foo)的结果是foo函数;
2.foo函数被直接调用,那么是默认绑定;
var obj1 = {
name: "obj1",
foo: function() {
console.log(this)
}
}
var obj2 = {
name: "obj2"
};
//obj2.bar = obj1.foo
//obj2.bar()//this指向obj2
(obj2.bar = obj1.foo)()//this指向window(属于独立函数的调用--(obj2.bar = obj1.foo)反会了foo函数也就是间接拿到了函数)注意:不加分号可能会报错bar不存在