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()); //ob1console.log(ob2.bindFn()); //ob2b1b2console.log(ob2.applyFn()); //ob2a1a2console.log(ob2.callFn()); //ob2c1c2
bind/ apply/call的作用都是改变函数this的指向。
bind是返回一个绑定后的新函数。
apply/call都是直接进行调用,区别只是传参形式的不同。
