2014-04-15 14 views
0

的$ .proxy命令我有一點,有一個位外國語法來我的代碼:使用的JavaScript/jQuery的

$.widget('ui.filterFieldDisplay', $.ui.fieldDisplay, { 
setFoo: function() { 
    . 
    . 
    . 
    // added the next two lines 
    var fooFieldWidgetOptions = fooFieldOptions.widgetOptions; 
    fooFieldWidgetOptions['default'] = operator; 
    var fooChangeProxy = $.proxy(this.fooChange, this); 
    fooFieldWidgetOptions.changeCallback = fooChangeProxy; 
} 

fooChange: function(fooModel) { 
    fooModel.getValue('bar'); 
    . 
    . 
    . 
} 

}); 

在這種情況下引用到this指針fooModel

我知道$.proxy方法將this指針綁定到函數,以便它在該上下文中操作。但我知道this沒有被引用到fooModel。所以我的問題是:什麼是fooModel,它從哪裏來?

+0

裏面我承擔'。'是你說的那種代碼,你忽略了嗎? –

+0

是的,'''爲了保密而省略了代碼。 –

回答

1

沒有,fooModel會無論是作爲第一個參數傳遞給fooFieldWidgetOptions.changeCallback

fooFieldWidgetOptions.changeCallback("helloWorld!"); // fooModel will be `helloWorld!` 

所有$.proxy()所做的就是確保thisfooChange內將是相同的thissetFoo

+0

因爲沒有任何信息傳遞給'fooFieldWidgetOptions.changeCallback',這是否意味着'fooModel'是'undefined'?它是否設置爲默認值? –

+0

如果確實是沒有任何東西傳遞給它,是的,你沒有在你的問題中包含你的代碼的一部分,雖然我不能確定。 –

+0

好的,在我的情況下,將變量傳遞給'fooChange'的唯一方法是?還有其他方法嗎?我編輯了我的代碼,以包含更多關於在'setFoo'中調用它的細節。 –