我想了解enhancers
或high order functions
如何在JavaScript中工作,以及如何编写函数来提供装饰功能。
所以我有一个基本的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
对象,或者在定义后为其添加更多属性?