जावास्क्रिप्ट फ़नक्शन कॉल

JavaScript फ़ंक्शन के भीतर का कोड 'कुछ' इसे बुला देता है तभी चलता है।

जेसकियाँ फ़ंक्शन बुला दें

जब फ़ंक्शन बनाया जाता हैनिर्धारितके समय, फ़ंक्शन के भीतर का कोड नहीं चलता है।

जब फ़ंक्शन बनाया जाता हैबुला देंके समय, फ़ंक्शन के भीतर का कोड चल जाता है।

फ़ंक्शन को बुला देने को भी 'फ़ंक्शन चालू करना' या 'फ़ंक्शन अनुवर्तन करना' कह सकते हैं।

इस ट्यूटोरियल में, हम 'बुला दें”。

फ़ंक्शन को फ़ंक्शन के रूप में बुला दें

इंस्टांस

function myFunction(a, b) {
    return a * b;
}
myFunction(10, 2);           // 20 बदला देगा

अपने आप आज्ञा करें

ये फ़ंक्शन किसी भी ऑब्जैक्ट के साथ नहीं हैं। लेकिन JavaScript में हमेशा एक डिफ़ॉल्ट ग्लोबल ऑब्जैक्ट होता है।

HTML में, डिफ़ॉल्ट ग्लोबल ऑब्जैक्ट एचटीएमएल पृष्ठ ही है, सभी ऊपर वाले फ़ंक्शन 'इसके साथ' एचटीएमएल पृष्ठ के साथ हैं।

ब्राउज़र में, यह पृष्ठ ऑब्जैक्ट ब्राउज़र विंडो है। ऊपर वाला फ़ंक्शन स्वयं एक विंडो फ़ंक्शन बन जाता है।

myFunction() और window.myFunction() एक ही फ़ंक्शन है:

इंस्टांस

function myFunction(a, b) {
    return a * b;
}
window.myFunction(10, 2);    // 20 वापस देगा

अपने आप आज्ञा करें

यह फ़ंक्शन को बुलाने का एक आम तरीका है, लेकिन यह एक अच्छी आदत नहीं है।

वैश्विक वस्तु में वैश्विक वारियबल, विधि या फ़ंक्शन आसानी से नामकरण संघर्ष और दरार पैदा कर सकते हैं।

थिस गैर-वारियबल

जाना जाता है थिस की चीज़ें, जब फ़ंक्शन में इस्तेमाल करते हैं तो, वह वर्तमान कोड की वस्तु है।

थिस की गुणवत्ता, जब फ़ंक्शन में इस्तेमाल करते हैं तो, वह फ़ंक्शन की वस्तु है।

ध्यान दें थिस एक वारियबल नहीं है। यह एक गैर-वारियबल है। आप इसे बदल नहीं सकते थिस की गुणवत्ता

वैश्विक वस्तु

जब वस्तु को स्वामी वस्तु के बिना बुलाया जाता है तोथिस की गुणवत्ता वैश्विक वस्तु के रूप में बन जाती है।

वेब ब्राउज़र में, वैश्विक वस्तु ब्राउज़र वस्तु है।

इस उदाहरण में थिस की गुणवत्ता इस विंडो वस्तु को वापस देती है:

इंस्टांस

var x = myFunction();            // x विंडो वस्तु का होगा
function myFunction() {
   return this;
}

अपने आप आज्ञा करें

फ़ंक्शन को वैश्विक फ़ंक्शन के रूप में बुलाने से थिस की गुणवत्ता वैश्विक वस्तु के रूप में बन जाती है।

window वस्तु को एक वारियबल के रूप में इस्तेमाल करना कोई मुश्किल नहीं है, लेकिन यह एक बुरी आदत है।

फ़ंक्शन को विधि के रूप में बुलाना

JavaScript में, आप फ़ंक्शन को वस्तु विधि के रूप में परिभाषित कर सकते हैं।

नीचे का उदाहरण एक वस्तु (myObject) बनाता है जो दो गुण (firstName और lastName) और एक विधि (fullName) है:

इंस्टांस

var myObject = {
    firstName: "Bill",
    lastName: "Gates",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
myObject.fullName();         // "Bill Gates" वापस देता है

अपने आप आज्ञा करें

fullName विधि एक फ़ंक्शन है। फ़ंक्शन वस्तु के अधीन है। myObject फ़ंक्शन का स्वामी है。

जाना जाता है थिस की चीज़ें 'स्वामित्व' इस JavaScript कोड के वस्तु के रूप में हैं। इस उदाहरण में,थिस की गुणवत्ता है myObject。

एक चेक करें! इस fullName विधि को संशोधित करके वापस थिस की गुणवत्ता:

इंस्टांस

var myObject = {
    firstName: "Bill",
    lastName: "Gates",
    fullName: function () {
        return this;
    }
}
myObject.fullName();          // वापस [object Object] (स्वामी वस्तु) देता है

अपने आप आज्ञा करें

ऑब्जेक्ट के तौर पर फ़ंक्शन को बुलाना थिस का मूल्य ऑब्जेक्ट को बनाएगा。

फ़ंक्शन कॉल को कन्स्ट्रक्टर कॉल के रूप में बुलाना

फ़ंक्शन कॉल के पहले है नया अगर फ़ंक्शन कॉल के पहले

यह आप एक नया फ़ंक्शन बनाना चाहते हैं लेकिन जब जावास्क्रिप्ट फ़ंक्शन ऑब्जेक्ट है, तो आप एक नया ऑब्जेक्ट बनाते हैं:

इंस्टांस

// यह फ़ंक्शन कन्स्ट्रक्टर है:
function myFunction(arg1, arg2) {
    this.firstName = arg1;
    this.lastName  = arg2;
}
// एक नया ऑब्जेक्ट बनाया गया है:
var x = new myFunction("Bill", "Gates");
x.firstName;                             // "Bill" वापस करेगा"

अपने आप आज्ञा करें

कन्स्ट्रक्टर कॉल नया ऑब्जेक्ट बनाएगा।नया ऑब्जेक्ट कन्स्ट्रक्टर से विशेषताएँ और विधियाँ विरासत करेगा。

कन्स्ट्रक्टर में थिस कीवर्ड कोई मूल्य नहीं है。

थिस का मूल्य फ़ंक्शन को कॉल करते समय बनाया गया नया ऑब्जेक्ट होगा。