我是一個比新手稍微多一點的JavaScript。不同的功能 - 它們是一樣的嗎?
在讀取源EventEmitter,我偶然發現了這個有趣的,對我來說,優雅的函數:
// alias a method while keeping the correct context
function alias(name) {
return function aliasClosure() {
return this[name].apply(this, arguments);
};
}
我有兩個主要問題:
首先:爲什麼是aliasClosure
一個命名爲函數?除了清晰度之外,它在某些方面有用嗎?另外,真的是封閉?對我來說,它看起來就像一個半匿名函數。
二:我改寫了這個函數是這樣的:
function alias2(name) {
return this[name].bind(this);
}
是否相同呢?我認爲它應該,因爲this
上下文是相同的,它在兩個版本中都被保留。
是否有理由相對於另一個?
查看第二個答案,這裏是一個很好的關閉封閉的JavaScript示例。 http://stackoverflow.com/questions/36636/what-is-a-closure – Matt