Javascript 请解释我如何使这个高阶函数工作
我试图了解Javascript 请解释我如何使这个高阶函数工作,javascript,reactjs,ecmascript-6,decorator,higher-order-functions,Javascript,Reactjs,Ecmascript 6,Decorator,Higher Order Functions,我试图了解增强器或高阶函数如何在JavaScript中工作,以及如何组合函数以提供修饰功能 因此,我有一个基本的用户工厂功能: function user() { return { name: 'amit', age: 41 } } 现在我想向这个工厂添加身份验证行为,比如mocklogin方法。所以我写了这个增强剂 function authUser(fn) { fn.login = () => { return 'you are now logge
增强器
或高阶函数
如何在JavaScript中工作,以及如何组合函数以提供修饰功能
因此,我有一个基本的用户
工厂功能:
function user() {
return {
name: 'amit',
age: 41
}
}
现在我想向这个工厂添加身份验证行为,比如mocklogin
方法。所以我写了这个增强剂
function authUser(fn) {
fn.login = () => {
return 'you are now logged in'
}
return fn
}
let loggedInUser = authUser(user)
现在我将user
传递到这个增强器中
function authUser(fn) {
fn.login = () => {
return 'you are now logged in'
}
return fn
}
let loggedInUser = authUser(user)
但是当我尝试调用login
这样的方法时
loggedInUser().login()
我明白了
我明白我并不是真的把fn称为传递到增强器中,这就是为什么我可能没有得到我想要的行为
- 但是我把它叫什么?及
- 如何使用登录方法正确增强原始
对象,或在定义后向其添加更多属性用户
- 这是因为您实际上是在为函数
fn
分配login
属性,而不是fn
的返回值。您可以尝试调用loggedInUser.login()
而不是loggedInUser().login()
来查看结果。这是因为您实际上是在为函数fn
分配login
属性,而不是fn
的返回值。您可以尝试调用loggedInUser.login()
而不是loggedInUser().login()
来查看结果。userloggedInUser.login()而不是loggedInUser().login()
userloggedInUser.login()而不是loggedInUser().login()