2010-10-08 12 views
7

जावास्क्रिप्ट में यह पुस्तकालयों/ढांचे के लिए बहुत लोकप्रिय है ताकि डेटा के पोस्ट-प्रोसेसिंग के लिए कॉलबैक फ़ंक्शन को परिभाषित किया जा सके।लोड() फ़ंक्शन उपयोगकर्ता को कॉलबैक प्रदान करने की अनुमति देता है?

उदाहरण के लिए।

load("5", function(element) { 
    alert(element.name); 
}); 

मुझे आश्चर्य है कि लोड() फ़ंक्शन उपयोगकर्ता को कॉलबैक प्रदान करने में सक्षम होने की तरह दिखता है?

क्या इसके लिए कोई अच्छा ट्यूटोरियल है?

उत्तर

13

खैर, load समारोह ऐसा दिखाई दे सकता जांचें कि हम सुनिश्चित करते हैं कि कॉलबैक तर्क एक ऐसा ऑब्जेक्ट है जिसे हम आमंत्रित कर सकते हैं, एक func tion।

फिर अपने उदाहरण:

load("5", function(element) { 
    alert(element.name); // Will show `"foo 5"`. 
}); 
+0

वाह .. वह सरल हुह। –

1

कार्य बस सामान्य प्रकार की तरह हैं और तर्क के रूप में पारित किया जा सकता: typeof साथ

function load(arg, callback) { 

    var element = { name: "foo " + arg }; // something to pass 

    if (typeof callback == 'function') { 
    callback(element); 
    } 
} 

:

function load(param1, callback) { 
    // call the callback parameter one second later 
    setTimeout(function() { 
     callback(param1); 
    }, 1000); 
} 
2
function load(number, callback){ 

    // do something 

    if (callback) { 
     callback(); 
    } 

} 
4

JavasScript कार्यों में प्रथम श्रेणी वस्तुओं रहे हैं। यह बहुत अधिक मतलब है कि वे अन्य निर्मित प्रकारों की तरह कार्य करते हैं। तुम्हें पता है, चर करने के लिए उन्हें आवंटित, आदि कार्यों में उन्हें पारित

यह लेख बताया गया हो कि जावास्क्रिप्ट में काम करते हैं प्रथम श्रेणी वस्तुओं के रूप में कार्य करता है एक उपयोगी लिंक है कर सकते हैं: http://helephant.com/2008/08/functions-are-first-class-objects-in-javascript/

योएल Spolsky एक विस्तृत और रोचक व्याख्या है अंत में http://www.joelonsoftware.com/items/2006/08/01.html

, क्योंकि वे प्रथम श्रेणी की वस्तुओं रहे हैं, कार्यों को बहुत आसानी से पैरामीटर के रूप में अन्य कार्यों स्वीकार कर सकते हैं: दिलचस्प बातें की कुछ/तरीकों पर आप जावास्क्रिप्ट में प्रथम श्रेणी की वस्तुओं के रूप में कार्य का उपयोग कर सकते

var load = function(callback) { 
    // load something here 
    callback(); 
} 
0
function(callback,argumentArray) { 
    var result = callback.apply(this,argumentArray); 
} 

अंक ध्यान दिया जाना चाहिए:

  • thisnull हो सकता है। उस स्थिति में यदि this कॉलबैक कार्यान्वयन में उपयोग किया जाता है तो यह Global ऑब्जेक्ट को इंगित करेगा।
  • argumentArray वास्तव में कॉलबैक विधि द्वारा आवश्यक तर्कों का एक जावास्क्रिप्ट Array है।
संबंधित मुद्दे