2011-01-09 50 views
1

看來,我無法在兩個名稱之間選擇一個功能:命名:createFunctionDelegate()vs createDelegateFunction()?

createFunctionDelegate()createDelegateFunction()

如果很重要,函數的目的是創建一個新的函數,在第二個參數的上下文中調用提供的回調函數。例如:

var foo = { 
    init: function() { 
     setTimeout(App.createFunctionDelegate(this.method, this)); 
    }, 

    method: function() {} 
} 

foo.init()當運行時,它設置一個調用一個函數,它代表執行到被叫在this(富)的上下文的另一功能(this.method)的超時。

無論如何,我不知道我應該命名這個功能。這對我很重要,因爲我將在數百個地方使用它,有時我會輸入一個,偶爾輸入另一個。這必須改變,我必須選擇。

+0

我不知道是否是明智地問這個問題與這個例子,因爲這是一種元功能。這是每個常規函數都會出現的常見問題,例如`decode_image()`或`image_decode()`,`calculate_date()`或`date_calculate()`? – AndreKR 2011-01-09 14:01:16

+0

喲dawg,我聽到你喜歡功能,所以我做了一個函數,返回一個函數,讓你可以打電話,而你打電話。 – BoltClock 2011-01-09 14:01:54

回答

3

我不會使用這些。您想要做的事情將由ES5中的bind()提供。如果它不存在,我會定義Function.prototype.bind,如here所述(但請仔細閱讀說明和可能的缺點)。

通過這種方式,您可以確保在支持的情況下使用本機功能。

0

剛剛createDelegate(this.method,this)呢?

作爲一個側面說明,在這裏我已經看到了這種方法(和書面他們)等地,帕拉姆排序爲背景,功能,因此createDelegate方法(這一點,this.method)