var name='哎哎哎'; var a={ name:'123', fn1:function(){ console.log('fn1:'+this.name) }, fn2:()=>{ console.log('fn2:'+this.name) } } // a.fn1(); // a.fn2(); var fn3=a.fn1; var fn4=a.fn2; var b={ name:'1234' } a.fn1.bind(b)(); a.fn2.bind(b)(); // 如果是function fn(){}这种方式声明的函数的话,如果没有用call,apply,bind之类的绑定this的话, // 那调用函数的时候可以分为2种调用形式: // 1.直接调用,比如fn(),这个时候相当于window.fn()所以this指向window // 2.以对象属性的方式调用xxx.fn(),比如obj.fn(),这个时候this指向obj // 箭头函数,上下文指向定义时的上下文