2014-11-11 3 views
0

Я играю с кофейникой, экспрессом и паспортом, и, похоже, я действительно не получаю некоторые детали языка.Coffeescript и Passport: Странное поведение, добавление функций

Может кто-нибудь объяснить мне, что здесь происходит?

Когда я инициализировать passport.serializeUser и passport.deserializeUser функции, как это:

passport.serializeUser (user, done)-> 
    done null, user 

passport.deserializeUser (obj, done)-> 
    done null, obj 

все работает, как ожидалось.

Но я хочу передать эти функции в другом месте. Как только я сделаю следующее, что, на мой взгляд, должно быть точно таким же, я получаю TypeError, говоря мне, что: «TypeError: object не является функцией», когда паспорт пытается вызвать функцию десериализации.

serialize = (user, done) -> 
    done null, user 

deserialize = (obj, done) -> 
    done null, obj 

passport.serializeUser = serialize 
passport.deserializeUser = deserialize 

У меня нет идей. В чем тут разница?

ответ

0

Это:

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) 

These:

serialize = (user, done) -> done null, user 
passport.serializeUser = serialize 

deserialize = (obj, done) -> done null, obj 
passport.deserializeUser = deserialize 

является присваивающим новыми функциями passport «s serializeUser и deserializeUser свойств.

Итак, первое вызывает некоторые функции с функциями в качестве аргументов, а второе переписывает некоторые свойства (которые являются функциями) с другими функциями.

+0

Argh ... Вы, конечно, правы. Спасибо. С моих заданий в настоящее время являются: passport.serializeUser сериализации passport.deserializeUser десериализации вместо: passport.serializeUser = сериализации passport.deserializeUser = десериализации Все это хорошо. :) –

Смежные вопросы