jQuery 上下文绑定
上下文绑定在函数型的语言当中起着非常重要的作用。不过, jQuery 中对此似乎并没有怎么强调,它的很多函数都默认处理了上下文,文档中也会告诉你,在某个函数当中, this 是什么东西,我觉得这种做法不太好。
jQuery 中有一个函数专门用于处理上下文绑定,虽然我觉得把 context 放在后面的格式非常别扭,不过好过没有吧。
- $.proxy()
- 为函数绑定上下文
它有两种使用方法,第一种就是最普通的,提供函数,和上下文对象,然后返回一个新函数:
$.proxy( function, context )
第二种,是提供一个上下文对象,及在这个上下文当中的一个成员名,然后把这个上下文绑定到这个成员之后,再返回这个成员。
$.proxy( context, name )
看下面的例子,来理解上下文:
var o = { x: '123', f: function(){console.log(this.x)}, } var go = function(f){f()} o.f() // 123 go(o.f) // undefined go($.proxy(o.f, o)) //123 $.proxy(o, 'f')() //123
当一个函数被传递之后,它就失去原先的上下文了。