我试图了解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
使用登录方法正确增强原始对象或在定义后为其添加更多属性?这是因为您实际上是将login
property分配给 function fn
,而不是 的返回值fn
。您可以尝试调用loggedInUser.login()
而不是loggedInUser().login()
查看结果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句