题目描述
将函数 fn 的执行上下文改为 obj 对象
示例1
输入
复制
function () {return this.greeting + ', ' + this.name + '!!!';}, {greeting: 'Hello', name: 'Rebecca'}
输出
复制
Hello, Rebecca!!!
知识点:
apply:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。
call:调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.call(A, args1,args2);即A对象调用B对象的方法。
fun.bind(this,arg1,arg2,...)。bind()方法会创建一个新的函数,称为绑定函数,fun方法在this环境下调用,该方法可传入两个参数,第一个参数作为this,第二个及以后的参数则作为函数的参数调用。
1.用apply()
function speak(fn, obj) {
return fn.apply(obj,[]);
}
2.用call()
function speak(fn, obj) {
return fn.call(obj,[]);
}
3.用bind()绑定
function speak(fn, obj) {
return fn.bind(obj)();
}