emmm我用两种方法解出来了,一种比较复杂,另一种相对简单
function alterContext(fn, obj) { this.greeting = obj.greeting; this.name = obj.name; return this.greeting + ', ' + this.name + '!'; }
call 、bind 、 apply 这三个函数的第一个参数都是 this 的指向对象
call的参数是直接放进去,里面的参数用','隔开
function alterContext(fn, obj) { return fn.call(obj); }
bind的参数除了返回的函数时数组之外,其他参数和call一样
function alterContext(fn, obj) { return fn.bind(obj)(); }
apply的所有参数必须放在一个数组中传进去(本题中没有体现)
function alterContext(fn, obj) { return fn.apply(obj); }
我是菜鸡,如有错误,欢迎指正