簡體   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