इस ट्यूटोरियल में, आप उदाहरणों की मदद से जावास्क्रिप्ट के कीवर्ड के बारे में जानेंगे।
जावास्क्रिप्ट में, this
कीवर्ड उस ऑब्जेक्ट को संदर्भित करता है जहां इसे कहा जाता है।
1. यह इनसाइड ग्लोबल स्कोप
जब this
अकेले उपयोग किया जाता है, this
तो वैश्विक ऑब्जेक्ट ( window
ब्राउज़र में ऑब्जेक्ट) को संदर्भित करता है । उदाहरण के लिए,
let a = this; console.log(a); // Window () this.name = 'Sarah'; console.log(window.name); // Sarah
यहाँ, के this.name
रूप में ही है window.name
।
2. इस अंदर समारोह
जब this
किसी फ़ंक्शन में उपयोग किया जाता है, this
तो वैश्विक ऑब्जेक्ट ( window
ब्राउज़र में ऑब्जेक्ट) को संदर्भित करता है । उदाहरण के लिए,
function greet() ( // this inside function // this refers to the global object console.log(this); ) greet(); // Window ()
3. यह इनसाइड कंस्ट्रक्टर फंक्शन
जावास्क्रिप्ट में, ऑब्जेक्ट बनाने के लिए कंस्ट्रक्टर फ़ंक्शन का उपयोग किया जाता है। जब किसी फ़ंक्शन को कंस्ट्रक्टर फ़ंक्शन के रूप में उपयोग किया जाता है, तो this
उस ऑब्जेक्ट को संदर्भित करता है जिसके अंदर इसका उपयोग किया जाता है। उदाहरण के लिए,
function Person() ( this.name = 'Jack'; console.log(this); ) let person1 = new Person(); console.log(person1.name);
आउटपुट
व्यक्ति (नाम: "जैक") जैक
यहाँ, this
व्यक्ति 1 वस्तु को संदर्भित करता है। इसीलिए, person1.name
हमें जैक देता है।
नोट : जब this
ES6 कक्षाओं के साथ प्रयोग किया जाता है, तो यह उस वस्तु को संदर्भित करता है जिसके अंदर इसका उपयोग किया जाता है (निर्माण कार्यों के समान)।
4. यह इनसाइड ऑब्जेक्ट विधि
जब this
किसी वस्तु की विधि के अंदर प्रयोग किया जाता है, तो this
वह उस वस्तु को संदर्भित करता है जो उसके भीतर है। उदाहरण के लिए,
const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); console.log(this.name); ) ) person.greet();
आउटपुट
(नाम: "जैक", आयु: 25, अभिवादन:।) जैक
उपरोक्त उदाहरण में, वस्तु this
को संदर्भित करता है person
।
5. इनसाइड इनर फंक्शन
जब आप this
किसी आंतरिक फ़ंक्शन (किसी विधि के अंदर) तक this
पहुंचते हैं , तो वैश्विक ऑब्जेक्ट को संदर्भित करता है। उदाहरण के लिए,
const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); // (name: "Jack", age… ) console.log(this.age); // 25 // inner function function innerFunc() ( // this refers to the global object console.log(this); // Window (… ) console.log(this.age); // undefined ) innerFunc(); ) ) person.greet();
आउटपुट
(नाम: "जैक", आयु: 25, अभिवादन: Window) 25 खिड़की (…) अपरिभाषित
यहाँ, this
अंदर वैश्विक वस्तुinnerFunc()
को संदर्भित करता है क्योंकि एक विधि के अंदर है।innerFunc()
हालाँकि, this.age
बाहर वस्तु innerFunc()
को संदर्भित करता है person
।
6. यह इनसाइड एरो फंक्शन
एरो फंक्शन के अंदर, this
पेरेंट स्कोप को संदर्भित करता है। उदाहरण के लिए,
const greet = () => ( console.log(this); ) greet(); // Window (… )
एरो फ़ंक्शंस के पास अपना नहीं है this
। जब आप this
एक तीर फ़ंक्शन के अंदर उपयोग करते हैं, तो this
इसका मूल स्कोप ऑब्जेक्ट को संदर्भित करता है। उदाहरण के लिए,
const greet = ( name: 'Jack', // method sayHi () ( let hi = () => console.log(this.name); hi(); ) ) greet.sayHi(); // Jack
यहां, फ़ंक्शन के this.name
अंदर ऑब्जेक्ट hi()
को संदर्भित करता है greet
।
आप undefined
किसी फ़ंक्शन का उपयोग करते समय होने वाली समस्या को हल करने के लिए तीर फ़ंक्शन का उपयोग कर सकते हैं (जैसा कि उदाहरण 5 में देखा गया है)। उदाहरण के लिए,
const person = ( name : 'Jack', age: 25, // this inside method // this refers to the object itself greet() ( console.log(this); console.log(this.age); // inner function let innerFunc = () => ( // this refers to the global object console.log(this); console.log(this.age); ) innerFunc(); ) ) person.greet();
आउटपुट
(नाम: "जैक", आयु: 25, अभिवादन: () 25 (नाम: "जैक", आयु: 25, अभिवादन: ") 25
यहां, innerFunc()
तीर फ़ंक्शन का उपयोग करके परिभाषित किया गया है। यह this
अपने मूल दायरे से लेता है। इसलिए, 25this.age
देता है ।
जब तीर फ़ंक्शन का उपयोग किया जाता है this
, तो यह बाहरी क्षेत्र को संदर्भित करता है।
7. यह सख्त मोड के साथ अंदर का कार्य
जब this
सख्त मोड के साथ एक फ़ंक्शन में उपयोग किया जाता है, this
है undefined
। उदाहरण के लिए,
'use strict'; this.name = 'Jack'; function greet() ( // this refers to undefined console.log(this); ) greet(); // undefined
नोट : this
सख्त मोड के साथ किसी फ़ंक्शन का उपयोग करते समय , आप जावास्क्रिप्ट फ़ंक्शन कॉल () का उपयोग कर सकते हैं।
उदाहरण के लिए,
'use strict'; this.name = 'Jack'; function greet() ( console.log(this.name); ) greet.call(this); // Jack
जब आप फ़ंक्शन के this
साथ गुजरते हैं call()
, greet()
तो this
ऑब्जेक्ट की विधि (इस मामले में वैश्विक ऑब्जेक्ट) के रूप में माना जाता है ।