Node.js上的Javascript FAB框架

我见过一张展示Fab的幻灯片,一个node.js框架。

Fab幻灯片

这是JavaScript吗?

有人可以解释这个代码是怎么回事?

我全都迷路了

简单的JavaScript,它是一个函数链接模式。

第一行( fab = require("fab") )包含fab函数并返回一个引用。

所有后面的括号都是函数调用,每个函数调用一次又一次返回相同的函数。

该模式可能看起来像这个简单的例子:

 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!"); 

输出:

function:Foo
一个RegExp:/ bar /
string:baz!

这确实很难遵循; 它根本不像Javascript …

无论如何,FAB利用返回一个指向被调用函数的指针。 例如:

 function doSomething(str){ alert(str); return arguments.callee; } // Alerts 'hi' and then 'there' doSomething('hi')('there'); 

当然,你可以实现额外的条件,比如计算参数个数或者检查传入的参数types。例如:

 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); 

最后一个示例提醒:

 > Hi, 3 + 4 is: > 7