参考答案
结论:JS改变函数作用域(即this绑定)可用call/apply/bind显式指定,或箭头函数继承词法作用域。方式:1) fn.call(obj, arg)和fn.apply(obj, [args])立即调用并绑定this为obj;2) fn.bind(obj)返回永久绑定this的新函数;3) 箭头函数无独立this,定义时捕获外层作用域链;4) with(obj){}临时将对象加入作用域链(严格模式禁用);5) new fn()将this指向新实例。原理:this由调用点决定,这些手段覆盖默认绑定规则。