改变上下文

题目描述

将函数 fn 的执行上下文改为 obj,返回 fn 执行后的值

示例1

输入

复制

alterContext(function() {return this.greeting + ', ' + this.name + '!'; }, {name: 'Rebecca', greeting: 'Yo' })

输出

复制

Yo, Rebecca!

知识点:
在JavaScript中,函数是一种对象,其上下文是可以变化的,对应的,函数内的this也是可以变化的,函数可以作为一个对象的方法,也可以同时作为另一个对象的方法,可以通过Function对象中的call或者apply方法来修改函数的上下文,函数中的this指针将被替换为call或者apply的第一个参数。将函数 fn 的执行上下文改为 obj 对象,只需要将obj作为call或者apply的第一个参数传入即可。

1.用apply()

function alterContext(fn, obj) {
    return fn.apply(obj);

}

2.用call()

function alterContext(fn, obj) {
    return fn.call(obj);

}

3.用bind()()

function alterContext(fn, obj) {
    return fn.bind(obj)();

}

猜你喜欢

转载自blog.csdn.net/qq_42488433/article/details/83750616