请解释我如何使这个高阶函数工作

阿米特·埃兰多

我试图了解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使用登录方法正确增强原始对象或在定义后为其添加更多属性?
刘易斯

这是因为您实际上是将loginproperty分配给 function fn,而不是 的返回值fn您可以尝试调用loggedInUser.login()而不是loggedInUser().login()查看结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

请解释 POSIX getline() 函数的这个声明

它是如何工作的?请逐行向我解释

Pascal,请告诉我这个循环是如何工作的

解释这个自定义函数如何工作

reduce()高阶函数如何工作?

谁能解释我这个Java代码是如何工作的?

如何用高阶函数解决这个问题?

请给我解释一下这个返回值是如何确定的

请解释一下这个jQuery函数

有人能解释一下这个功能是如何工作的吗?函数{}(函数

高阶函数如何在 Scala 中工作?

我查找素数的代码可以正常工作,但打印出意外的9值。请解释如何?

请解释这个Javascript怪癖

请解释这个C ++宏

有人可以解释这个反转列表元素的 OCaml 函数是如何工作的吗?

谁能解释一下这个递归函数在 C++ 中是如何工作的?

有人可以解释这个高阶JavaScript函数令人困惑的语法吗?

这个程序是如何工作的。我是编程菜鸟,请用简单的方式解释一下

有人可以解释我这个例外是如何工作的吗?

我如何解释这个宏?

我如何解释这个时间戳

这个replaceAt函数如何工作?

这个 dayOfTheYear 函数是如何工作的?

这个 foo 函数是如何工作的?

这个 asyncHandler 函数是如何工作的?

在Codewars上巧妙地使用SUBSTRING,有人可以请plesae向我解释这是如何工作的吗?-Postgres

为什么我的结果是 1436189223 ?请帮我解释这个结果

不明白为什么这个程序给我这个输出。请给我解释一下

高阶函数和 Set 如何在 Scheme 上工作?