将函数 fn 的执行上下文改为 obj,返回 fn 执行后的值
输入例子:
alterContext(function() {return this.greeting + ', ' + this.name + '!'; }, {name: 'Rebecca', greeting: 'Yo' })
输出例子:
Yo, Rebecca!
主要有三种答案。
function alterContext(fn, obj) {
return fn.bind(obj)();//.bind()返回的是一个函数,所以需要立即执行。 }
function alterContext(fn, obj) {
return fn.call(obj);
}
function alterContext(fn, obj) {
return fn.apply(obj);
}
函数调用的三种方式:
obj.myFunc();
myFunc.call(obj,arg);//多用于参数个数确定时
myFunc.apply(obj,[arg1,arg2..]);//多用于参数个数不确定时