Widziałem slajd, który przedstawił Fab, framework node.js.JavaScript FAB framework na Node.js
Czy ta JavaScript?
Czy ktoś mógłby wyjaśnić, co się dzieje w tym kodzie?
Jestem zagubiony.
Widziałem slajd, który przedstawił Fab, framework node.js.JavaScript FAB framework na Node.js
Czy ta JavaScript?
Czy ktoś mógłby wyjaśnić, co się dzieje w tym kodzie?
Jestem zagubiony.
Jest zwykłym kodem JavaScript, jest to funkcja łańcuchowa o wzorze.
Pierwsza linia, (fab = require("fab"))
, zawiera funkcję fab
i zwraca do niej odniesienie.
Wszystkie kolejne nawiasy to wywołania funkcji, każde wywołanie funkcji powoduje powrót do tej samej funkcji.
Wzór prawdopodobnie wygląda tak uproszczonym przykładzie:
var foo = function (arg) {
// detect what the argument is
if (typeof arg == 'function') {
// do something with arg
console.log('function: '+arg());
} else if (arg instanceof RegExp) {
// arg is a RegExp...
console.log('A RegExp: '+arg);
} else if (typeof arg == "string") {
// arg is a string
console.log('A string: '+arg);
}
return foo; // return a reference to itself
};
(foo)
(function() { return "Foo "; })
(/bar/)
(" baz!");
Wyjścia:
function: Foo A RegExp: /bar/ A string: baz!
Myślę, że powinniśmy połączyć nasze odpowiedzi ... – Harmen
@ Harmen..do tego. Nie chcę podawać tylko jednego z kredytów =) –
To rzeczywiście trudne do naśladowania; to tak naprawdę nie wygląda na JavaScript ...
W każdym razie FAB korzysta z zwracania wskaźnika do funkcji, która została wywołana. Np.
function doSomething(str){
alert(str);
return arguments.callee;
}
// Alerts 'hi' and then 'there'
doSomething('hi')('there');
Oczywiście można wdrożyć dodatkowe warunki, jak zliczanie liczby argumentów lub sprawdzanie typ argumentów przekazanych w na przykład:
function doSomething(){
if(arguments.length == 1){
alert(arguments[0])
}
else if(arguments.length == 2){
alert(arguments[0] + arguments[1]);
}
return arguments.callee;
}
doSomething
("Hi, 3 + 4 is:")
(3, 4);
ostatnim przykładzie Alarmy:
> Hi, 3 + 4 is:
> 7
http://blip.tv/jsconfeu/jed-schmidt-getting-functional-with-fab-4399811 – clyfe