जावास्क्रिप्ट थिस कीवर्ड

इंस्टांस

var person = {
  firstName: "Bill",
  lastName : "Gates",
  id       : 678,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

स्वयं प्रयोग करें

this क्या है?

JavaScript this इसका अर्थ है इसका मालिक ऑब्जेक्ट

यह अलग-अलग मूल्य रखता है, जो इसके इस्तेमाल स्थान पर निर्भर करता है:

  • विधा मेंthis इसका अर्थ है मालिक ऑब्जेक्ट
  • अकेले मेंthis इसका अर्थ है विश्व ऑब्जेक्ट
  • फ़ंक्शन मेंthis इसका अर्थ है विश्व ऑब्जेक्ट
  • फ़ंक्शन में, सख्त मोड मेंthis अनिर्दिष्ट है
  • इवेंट मेंthis इसका अर्थ है इवेंट को प्राप्त करने वाला एलीमेंट

जैसे call() और apply() इस तरह की विधाएं this को किसी भी ऑब्जेक्ट पर बांध सकती हैं。

विधा में this

ऑब्जेक्ट विधा मेंthis इस विधा का "मालिक" है

इस पृष्ठ के शीर्ष प्रयोग मेंthis इसका अर्थ है person ऑब्जेक्ट

person ऑब्जेक्ट fullName विधा का मालिक है

fullName : function() {
  return this.firstName + " " + this.lastName;
}

स्वयं प्रयोग करें

अकेले this

अकेले इस्तेमाल करते समय, मालिक विश्व ऑब्जेक्ट है, इसलिए this इसका अर्थ है विश्व ऑब्जेक्ट

ब्राउज़र विंडो में, विश्व ऑब्जेक्ट [object Window]

इंस्टांस

var x = this;

स्वयं प्रयोग करें

सख्त मोड में, अकेले इस्तेमाल किए जाने पर this विश्व ऑब्जेक्ट को कहता है [object Window]

इंस्टांस

"use strict";
var x = this;

स्वयं प्रयोग करें

फ़ंक्शन में this (डिफ़ॉल्ट)

JavaScript फ़ंक्शन में, फ़ंक्शन का मालिक डिफ़ॉल्ट बांधन करता है this

फ़ंक्शन मेंthis विश्व ऑब्जेक्ट को कहता है [object Window]

इंस्टांस

function myFunction() {
  return this;
}

स्वयं प्रयोग करें

फ़ंक्शन में this (सख्त मोड)

JavaScript सख्त मोड में डिफ़ॉल्ट बांधन की अनुमति नहीं देता है。

इसलिए, फ़ंक्शन में इस्तेमाल करते समय, सख्त मोड मेंthis अनिर्दिष्ट है (अनिर्दिष्ट है):undefined})

इंस्टांस

"use strict";
function myFunction() {
  return this;
}

स्वयं प्रयोग करें

इवेंट हैंडलर में this

HTML इवेंट हैंडलर मेंthis इसका अर्थ है इस इवेंट को प्राप्त करने वाला HTML एलीमेंट:

इंस्टांस

<button onclick="this.style.display='none'">
  मुझे हटाने के लिए क्लिक करें!
</button>

स्वयं प्रयोग करें

ऑब्जेक्ट विधा बांधन

इस उदाहरण में,this यह person ऑब्जेक्ट है (person ऑब्जेक्ट यह फ़ंक्शन का "मालिक" है):

इंस्टांस

var person = {
  firstName  : "Bill",
  lastName   : "Gates",
  id         : 678,
  myFunction : function() {
    return this;
  }
};

स्वयं प्रयोग करें

इंस्टांस

var person = {
  firstName: "Bill",
  lastName : "Gates",
  id       : 678,
  fullName : function() {
    return this.firstName + " " + this.lastName;
  }
};

स्वयं प्रयोग करें

अर्थातthis.firstName इसलिए thisका (person) ऑब्जेक्ट firstName गुण

एक्सप्लिसिट फ़ंक्शन बांधन

call() और apply() विधियाँ अभावी जेसेक्रिप्ट विधियाँ हैं。

वे दोनों एक अन्य ऑब्जेक्ट को पारामीटर के रूप में ऑब्जेक्ट विधि को बुलाने के लिए उपयोग किए जा सकते हैं。

आप इस ट्यूटोरियल के बाद इसके बारे में पढ़ सकते हैं call() और apply() के बारे में अधिक जानकारी

इस उदाहरण में, जब person2 को एक पारामीटर के रूप में person1.fullName को बुलाया जाता है तो,this इसे person2 को उठाता है, भले ही यह person1 का विधि है:

इंस्टांस

var person1 = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}
var person2 = {
  firstName:"Bill",
  lastName: "Gates",
}
person1.fullName.call(person2);  // वापस "Bill Gates" देगा

स्वयं प्रयोग करें