2011-01-09 47 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)