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
}
このエンハンサーを書く今、私は
を得るloggedInUser().login()
...私は、このエンハンサー
let loggedInUser = authUser(user)
にuser
を渡すしかし、私はこのようなlogin
メソッドを呼び出すしようとすると、
Uncaught TypeError: loggedInUser(...).login is not a function
私は本当にエンハンサーに渡されているfnを呼んでいるわけではないことを理解しているので、おそらく私が望む振る舞いを得られないのでしょう。
- しかし、どこから呼びますか?
- 元の
user
オブジェクトをloginメソッドで正しく拡張するか、定義後にプロパティを追加するにはどうすればよいですか?