我有一個簡單的類與單個方法exec(arg1,..,argn)
我想有一個別名的方法調用exec
與預定義的參數值(例如exec_sync = exec.bind(this, true)
)。正確的方法動態添加函數到ES6類
下面的伎倆:
class Executor {
constructor() {
this.exec_sync = this.exec.bind(this, true);
}
exec(sync, cmd, args/* ... */) {
// impl
}
}
但我不知道這是否是一個好主意,或者這是慣用的以ES6。
UDATE:
在實際生活中的例子我有分別爲3和4的環,其用於動態地添加的12種別名方法對類的總數兩個嵌套循環。當你實際上可以利用JS作爲基於原型的編程語言時,明確定義別名方法將是一項繁瑣的任務。
更新2 - 示例:
假設我們有有一個方法request(method, body)
一個簡單的HTTP客戶端,我們希望提供別名方法GET
,PUT
,等它看起來像下面這樣:
class HTTP {
constructor() {
['GET', 'PUT', 'POST', 'DEL'].forEach((method) => {
this[method] = this.request.bind(this, method);
}, this);
}
request(method, body) {
// execute the HTTP request
}
}
爲什麼不明確創建多個功能? 'exec_sync(... args){return this.exec(true,... args); }' – zerkms
@zerkms我認爲這會更清楚該班的工作。我只是對做這種事情的可能性感興趣。 –
ES6類只是語法糖。在運行時向對象添加屬性方面沒有任何變化。 –