Node.js上的Javascript FAB框架
我见过一张展示Fab的幻灯片,一个node.js框架。
这是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