繁体   English   中英

请说明如何使此高阶函数起作用

[英]Please explain how I can make this higher order function work

我试图了解enhancershigh 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对象或向其添加更多属性?

这是因为你实际上指定login属性的功能fn ,而不是返回值fn 您可以尝试调用loggedInUser.login()而不是loggedInUser().login()来查看结果。

用户loggingInUser.login()而不是loggingInUser()。login()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM