// this 绑定规则
// 1. 默认绑定
var foo = function() {
console.log(this.a);
}
var a = 'outer-ab';
foo(); // outer-ab
// 2. 隐式绑定
var bar = function() {
console.log(this.a)
}
var baz = function(item) {
console.log(item, this.a)
}
var obj = {
a: 'inner-ab',
fooFn: foo
}
obj.fooFn(); // inner-ab
// 3. 显式绑定 硬绑定
bar.call(obj); // inner-ab
bar.apply(obj); //inner-ab
bar.bind(obj); // inner-ab
[1,2,3].forEach(baz, obj)
// 4. new 绑定
var bac = function(a) {
this.a = a;
}
var new_obj = new bac(2);
console.log(new_obj.a)
console