我想了解如何在JavaScript中工作enhancers
或high order functions
以及如何編寫功能來提供裝飾功能。請解釋我如何才能使這個更高階的功能工作
所以我有一個基本的user
工廠函數:
function user() {
return {
name: 'amit',
age: 41
}
}
現在我想添加像一個模擬login
方法來這家工廠的認證行爲。所以我寫這增強
function authUser(fn) {
fn.login =() => {
return 'you are now logged in'
}
return fn
}
現在我通過user
這個增強
let loggedInUser = authUser(user)
但是當我嘗試調用login
方法是這樣的...
loggedInUser().login()
我得到
Uncaught TypeError: loggedInUser(...).login is not a function
我知道我並沒有真的把fn傳遞給增強器,這就是爲什麼我沒有得到我想要的行爲。
- 但是我在哪裏稱它?和
- 如何正確地使用登錄方法增強原始
user
對象或在定義之後爲其添加更多屬性?