1. 程式人生 > >JS能力測評22:函式的上下文

JS能力測評22:函式的上下文

思路:

在JavaScript中,函式是一種物件,其上下文是可以變化的,對應的,函式內的this也是可以變化的,函式可以作為一個物件的方法,也可以同時作為另一個物件的方法,可以通過Function物件中的call或者apply方法來修改函式的上下文,函式中的this指標將被替換為call或者apply的第一個引數。將函式 fn 的執行上下文改為 obj 物件,只需要將obj作為call或者apply的第一個引數傳入即可。

function speak(fn, obj) {
    return fn.apply(obj);
}

其他方法:

//三種方案
//apply
function speak(fn, obj) {
    return fn.apply(obj);
}
//call
function speak(fn, obj) {
    return fn.call(obj);
}
//bind
function speak(fn, obj) {
    return fn.bind(obj)();
}