const ob1 = {
name: 'ob1',
fn: function(arg1 = '', arg2 = '') {
return this.name + arg1 + arg2;
},
};
const ob2 = {
name: 'ob2',
fn: function() {
return ob1.fn();
},
bindFn: function() {
console.log(ob1.fn.bind(this));
return ob1.fn.bind(this)('b1', 'b2');
},
applyFn: function() {
return ob1.fn.apply(this, ['a1', 'a2']);
},
callFn: function() {
return ob1.fn.call(this, 'c1', 'c2');
},
};
console.log(ob2.fn()); //ob1
console.log(ob2.bindFn()); //ob2b1b2
console.log(ob2.applyFn()); //ob2a1a2
console.log(ob2.callFn()); //ob2c1c2
bind/ apply/call的作用都是改变函数this
的指向。
bind是返回一个绑定后的新函数。
apply/call都是直接进行调用,区别只是传参形式的不同。