我一直在玩咖啡,快递和护照,看来我并没有真正了解该语言的一些细节。
有人可以告诉我,这是怎么回事?
当我初始化passport.serializeUser
和passport.deserializeUser
函数时,如下所示:
passport.serializeUser (user, done)->
done null, user
passport.deserializeUser (obj, done)->
done null, obj
一切都按预期进行。
但我想从其他地方传递这些功能。一旦执行以下操作(我认为应该完全相同),就会收到TypeError,告诉我:当护照尝试调用我的反序列化函数时,“ TypeError:对象不是函数”。
serialize = (user, done) ->
done null, user
deserialize = (obj, done) ->
done null, obj
passport.serializeUser = serialize
passport.deserializeUser = deserialize
我没主意了。这里有什么区别?
这些:
passport.serializeUser (user, done)->
done null, user
passport.deserializeUser (obj, done)->
done null, obj
正在调用serializeUser
和的deserializeUser
方法,passport
并将它们作为参数传递。它们与:
s = (user, done) -> done(null, user)
passport.serializeUser(s)
d = (obj, done) -> done(null, obj)
passport.deserializeUser(d)
这些:
serialize = (user, done) -> done null, user
passport.serializeUser = serialize
deserialize = (obj, done) -> done null, obj
passport.deserializeUser = deserialize
正在分配新的功能passport
的serializeUser
和deserializeUser
性能。
因此,第一个方法是使用函数作为参数来调用某些函数,第二个方法是用其他函数覆盖某些属性(碰巧是函数)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句