JavaScript中的函数上下文

时间:2013-07-02 17:54:55

标签: javascript this

我希望实现类似的目标:

函数someFunction有一个方法.lockThis(<object>),第一次调用时:

var foreverThis = {};

someFunction.lockThis(foreverThis);  

// ... or
// someFunction = someFunction.lockThis(foreverThis);

它会将此函数绑定到<object>,以便通过as-function或as-method调用或者通过apply / call执行此函数的下一个(或任何其他)时间 - 它最初会给出<object>就是这样。

我当然可以定义Function.prototype.lockThis,它将通过.apply()/call()调用该函数并将给定对象指定为上下文,但是仍然可以替换someFunction的上下文如果有人也通过apply()调用它。

有没有办法在JavaScript中锁定函数上下文,以便总是提供对象this而不更改函数本身的代码?

1 个答案:

答案 0 :(得分:1)

这叫做bind()

someFunction = someFunction.bind(foreverThis);