2015-07-30 4 views
2

В настоящее время я работаю с SailsJS и имеет встроенный «журнал». В этом, вы сможете:JavaScript, вызывающий функцию или метод цепочки

sails.log('Default log'); 

Или:

sails.log.info('Info Log'); 

Если бы я был построить подобную установку сам, как бы я идти об этом? У меня действительно нет примеров, так как я не уверен, как это сделать!

+0

С SailsJS это OSS, вы проверили, как они это делают? – facundofarias

+0

«Если бы я сам построил аналогичную установку», спросите вы, как вы собираетесь строить клон Sails? Ваш вопрос непонятен. – Andy

+0

Они просто используют пакет npm, который делает это. Это называется [капитан-журнал] (https://github.com/balderdashy/captains-log) –

ответ

2

В Javascript, Вы можете объявить функцию

foo = function(a){ 

    return console.log(a); 

} 

И затем угрозу его как объект, и дать ему параметры. (Даже другая функция)

foo.bar = function(a){ 

    console.info(a); 

} 

Итак, теперь вы можете использовать foo(9);, а также foo.bar(9);

С помощью этого синтаксиса, Вы можете пойти так глубоко, как Вы хотели бы, так как Вы можете также использовать функцию foo.bar как объект и т. д.

+0

Pff damn Я никогда не думал, что вы можете это сделать - и там я пытался «eval()» и прочее! – Alias

1

Как это:

function a(){ 
 
    alert(1); 
 
} 
 

 
a.b = function(){ 
 
    alert(2); 
 
} 
 

 
a(); 
 
a.b();

Это самый простой пример, и выполняет так же, как, как вы ожидаете.

1

Это просто, как только вы осознаете, что функции JavaScript все еще являются обычными объектами, просто действуя при наличии оператора «()». Вышеприведенное может быть просто реализовано, например. например:

function log (text) { console.log(text); } 

log.info = function (infoText) { console.info(infoText); } 
Смежные вопросы