-2

我想实现类似的东西:

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

var foreverThis = {};

someFunction.lockThis(foreverThis);  

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

它将将此函数绑定到,<object>以便该函数的下一次(或任何其他)时间通过 as-function 或 as-method 调用或通过 apply/call 执行 - 它最初将<object>作为 this 给出。

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

有没有办法在 JavaScript 中锁定函数上下文,使其始终提供对象this而不更改函数本身的代码?

4

1 回答 1

1

这叫做bind()

someFunction = someFunction.bind(foreverThis);
于 2013-07-02T17:56:31.917 回答