[英]Please explain how I can make this higher order function work
我試圖了解enhancers
或high 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()
來查看結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.