1. const ob1 = {
    2. name: 'ob1',
    3. fn: function(arg1 = '', arg2 = '') {
    4. return this.name + arg1 + arg2;
    5. },
    6. };
    7. const ob2 = {
    8. name: 'ob2',
    9. fn: function() {
    10. return ob1.fn();
    11. },
    12. bindFn: function() {
    13. console.log(ob1.fn.bind(this));
    14. return ob1.fn.bind(this)('b1', 'b2');
    15. },
    16. applyFn: function() {
    17. return ob1.fn.apply(this, ['a1', 'a2']);
    18. },
    19. callFn: function() {
    20. return ob1.fn.call(this, 'c1', 'c2');
    21. },
    22. };
    23. console.log(ob2.fn()); //ob1
    24. console.log(ob2.bindFn()); //ob2b1b2
    25. console.log(ob2.applyFn()); //ob2a1a2
    26. console.log(ob2.callFn()); //ob2c1c2

    bind/ apply/call的作用都是改变函数this的指向。
    bind是返回一个绑定后的新函数。
    apply/call都是直接进行调用,区别只是传参形式的不同。