我希望实现类似的目标:
函数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
而不更改函数本身的代码?