在JavaScript的Underscore.js库中,“context”的意思是什么?我该如何使用它?

20
我正在阅读DocumentCloudUnderscore.js库文档。很多函数都有一个可选的context参数,但没有解释它的含义。作为熟悉Ruby的人,我的猜测是这类似于Ruby的binding,并且与this的含义有关。我的JavaScript使用范围仅限于几个jQuery调用和一些非常基础的ajax。
我的问题是:什么是context,我应该如何使用它?一个好的答案可能应该包含一些关于JavaScript工作原理的信息。
1个回答

14

Javascript函数接受一个隐藏的this参数,该参数表示函数调用时的上下文。

通常情况下,this是全局对象(通常为window)。但是,当一个函数在对象上被调用时,this将会是调用它的对象。

Underscore.js中需要回调函数的方法会接受一个可选的context参数。如果指定了这个参数,回调函数将使用该context调用,这意味着回调函数内部的this将等于该上下文。


3
那回答了问题的第一部分。现在,我应该在什么情况下使用这个能力,并且应该将“this”设置为什么?换句话说,这是如此罕见的东西,以至于除非它出现在别人的代码中,否则我应该忽略它吗? - John F. Miller
@John:如果你需要在上下文中调用自己对象的成员函数,那么这是非常有用的。 - SLaks
@SLaks:你能提供一个使用context的具体例子吗? - jkndrkn
@jkndrkn:_.whatever(myObj.someMethod, myObj) - SLaks

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接