2010-09-26 11 views
19

मैंने एक स्लाइड देखी है जो Fab, एक node.js ढांचा प्रस्तुत किया है।Node.js पर जावास्क्रिप्ट एफएबी ढांचा

Fab slide

इस JavaScript है?

कोई बता सकता है कि उस कोड में क्या चल रहा है?

मैं सब खो गया हूं।

+0

http://blip.tv/jsconfeu/jed-schmidt-getting-functional-with-fab-4399811 – clyfe

उत्तर

22

सादा जावास्क्रिप्ट है, यह फ़ंक्शन चेनिंग पैटर्न है।

पहली पंक्ति, (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 
A RegExp: /bar/ 
A string: baz! 
+0

मुझे लगता है कि हम अपने जवाब को संयोजित करना चाहिए ... – Harmen

+0

@ Harmen..do कि। आप केवल एक क्रेडिट देना नहीं चाहते हैं =) –

9

कि वास्तव में पालन करने के लिए मुश्किल है; यह वास्तव में जावास्क्रिप्ट की तरह दिखता नहीं है ...

वैसे भी, एफएबी को उस समारोह में एक सूचक लौटने का लाभ मिलता है जिसे बुलाया गया था। उदाहरण के लिए:।

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

पिछले उदाहरण अलर्ट:

function doSomething(str){ 
    alert(str); 
    return arguments.callee; 
} 

// Alerts 'hi' and then 'there' 
doSomething('hi')('there'); 

बेशक आप तर्क की संख्या की गणना या में पारित तर्क का प्रकार की जाँच की तरह अतिरिक्त शर्तों को लागू कर सकते हैं, उदाहरण के लिए

> Hi, 3 + 4 is: 
> 7 
संबंधित मुद्दे