new
के साथ किसी फ़ंक्शन को कॉल करने से, कॉल किए गए फ़ंक्शन का इस्तेमाल करके एक नया ऑब्जेक्ट बनता है
"कंस्ट्रक्टर" उस ऑब्जेक्ट के लिए:
function MyFunction() {}
const myObject = new MyFunction();
typeof myObject;
> "object"`
इसकी मदद से, "कंस्ट्रक्टर फ़ंक्शन" को तो इस टूल की मदद से वे ऑब्जेक्ट जो एक जैसे स्ट्रक्चर वाले पैटर्न का पालन करते हैं:
function MyFunction() {
this.myProperty = true;
}
const myObject = new MyFunction();
myObject.myProperty;
> true
कंस्ट्रक्टर में मौजूद this
की वैल्यू
फ़ंक्शन का मतलब है, बनाए जा रहे ऑब्जेक्ट का पता लगाना. इससे, ऑब्जेक्ट में जानकारी अपने-आप भर जाती है
प्रॉपर्टी और तरीकों की जानकारी देते हैं. इसकी मदद से,
ऐसे ऑब्जेक्ट बनाना जिनमें डेटा वैल्यू और कार्रवाई करने के लिए ज़रूरी तरीके शामिल हों
उस डेटा को सिंगल पोर्टेबल यूनिट के तौर पर इकट्ठा करता है, जिसके कॉन्सेप्ट को "encapsulation" कहते हैं:
function MyFunction( myArgument ) {
this.myValue = myArgument;
this.doubleMyValue = () => myArgument * 2;
}
const myObject = new MyFunction( 10 );
myObject.myValue;
> 10
myObject.doubleMyValue();
> 20
this
का मतलब है, मौजूदा एक्ज़ीक्यूशन
फ़ंक्शन के कॉन्टेक्स्ट का मतलब है कि कंस्ट्रक्टर फ़ंक्शन
किसी भी दूसरे फ़ंक्शन की तरह, this
की वैल्यू के लिए नियम बनाएं. उदाहरण के लिए, किसी फ़ंक्शन
इसे कंस्ट्रक्टर की तरह बनाया गया है, जो ग्लोबल बाइंडिंग का इस्तेमाल करता है
अलग-अलग इस्तेमाल करने पर this
की वैल्यू के लिए:
function MyFunction() {
console.log( this );
}
const myObject = new MyFunction();
> MyFunction { }
MyFunction(); // Global `this` binding outside of strict mode is `globalThis`
> Window { … }
(function() {
"use strict";
function MyFunction() {
console.log( this );
}
MyFunction(); // Global `this` binding inside of strict mode is `undefined`
}());
> undefined
किसी कंस्ट्रक्टर फ़ंक्शन के पहले वर्ण को कैपिटलाइज़ करना पारंपरिक होता है
आइडेंटिफ़ायर, जो JavaScript के बिल्ट-इन
फ़ैक्ट्री फ़ंक्शन का इस्तेमाल करता है. हालांकि, कभी-कभी आपको एक-दूसरे की जगह पर इस्तेमाल हुए शब्द दिख सकते हैं,
कंस्ट्रक्टर फ़ंक्शन—ऐसे फ़ंक्शन जिनका मकसद नए कंस्ट्रक्शन पर काम करना है
ऑब्जेक्ट को new
कीवर्ड से शुरू करने पर—यह "फ़ैक्ट्री" से अलग होता है
फ़ंक्शन," जो साफ़ तौर पर return
और
ऑब्जेक्ट को सामान्य रूप से इस्तेमाल करने पर:
function myFunction( myArgument = false ) {
return { "myProperty" : myArgument };
}
const myObject = myFunction( true );
myObject;
> Object { myProperty: true }
बुनियादी सिद्धांत एक जैसे हैं, लेकिन कस्टम डाइमेंशन के लिए इस्तेमाल के उदाहरण कंस्ट्रक्टर फ़ंक्शन, सभी को बेहतर तरीके से दिखती हैं ES6 में पेश किया गया क्लास सिंटैक्स.