जावास्क्रिप्ट ऑब्जेक्ट कंस्ट्रक्टर्स
उदाहरण
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
कंस्ट्रक्टर फ़ंक्शंस को अपर-केस पहले अक्षर के साथ नाम देना अच्छा अभ्यास माना जाता है।
वस्तु प्रकार (ब्लूप्रिंट) (कक्षाएं)
पिछले अध्यायों के उदाहरण सीमित हैं। वे केवल एकल वस्तुएं बनाते हैं।
कभी-कभी हमें एक ही "प्रकार" के कई ऑब्जेक्ट बनाने के लिए " ब्लूप्रिंट " की आवश्यकता होती है।
"ऑब्जेक्ट प्रकार" बनाने का तरीका ऑब्जेक्ट कन्स्ट्रक्टर फ़ंक्शन का उपयोग करना है ।
ऊपर के उदाहरण में, function Person()
एक ऑब्जेक्ट कंस्ट्रक्टर फ़ंक्शन है।
new
कंस्ट्रक्टर फ़ंक्शन को कीवर्ड के साथ कॉल करके एक ही प्रकार की वस्तुएं बनाई जाती हैं :
const myFather = new Person("John", "Doe", 50, "blue");
const myMother = new Person("Sally", "Rally", 48, "green");
यह कीवर्ड _
जावास्क्रिप्ट में, जिस वस्तु को कहा जाता this
है वह वह वस्तु है जो कोड का "मालिक" है।
का मान this
, जब किसी वस्तु में प्रयोग किया जाता है, तो वह वस्तु ही होती है।
एक कंस्ट्रक्टर में फ़ंक्शन this
का कोई मान नहीं होता है। यह नई वस्तु के लिए एक विकल्प है। this
जब कोई नई वस्तु बनाई जाती है तो वसीयत का मान नई वस्तु बन जाता है।
ध्यान दें कि this
एक चर नहीं है। यह एक कीवर्ड है। आप का मान नहीं बदल सकते this
।
किसी वस्तु में संपत्ति जोड़ना
किसी मौजूदा ऑब्जेक्ट में नई प्रॉपर्टी जोड़ना आसान है:
उदाहरण
myFather.nationality = "English";
संपत्ति मेरे पिता में जोड़ दी जाएगी। मेरी माँ को नहीं। (किसी अन्य व्यक्ति की वस्तुओं के लिए नहीं)।
किसी वस्तु में एक विधि जोड़ना
किसी मौजूदा ऑब्जेक्ट में नई विधि जोड़ना आसान है:
उदाहरण
myFather.name = function () {
return this.firstName + " " + this.lastName;
};
विधि myFather में जोड़ी जाएगी। मेरी माँ को नहीं। (किसी अन्य व्यक्ति की वस्तुओं के लिए नहीं)।
एक निर्माता के लिए एक संपत्ति जोड़ना
आप किसी ऑब्जेक्ट कंस्ट्रक्टर में उसी तरह एक नई प्रॉपर्टी नहीं जोड़ सकते जैसे आप किसी मौजूदा ऑब्जेक्ट में एक नई प्रॉपर्टी जोड़ते हैं:
उदाहरण
Person.nationality = "English";
कंस्ट्रक्टर में एक नई संपत्ति जोड़ने के लिए, आपको इसे कंस्ट्रक्टर फ़ंक्शन में जोड़ना होगा:
उदाहरण
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = "English";
}
इस तरह ऑब्जेक्ट गुणों में डिफ़ॉल्ट मान हो सकते हैं।
एक निर्माता के लिए एक विधि जोड़ना
आपका कंस्ट्रक्टर फ़ंक्शन विधियों को भी परिभाषित कर सकता है:
उदाहरण
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.name = function() {
return this.firstName + " " + this.lastName;
};
}
आप किसी ऑब्जेक्ट कंस्ट्रक्टर में उसी तरह एक नई विधि नहीं जोड़ सकते जैसे आप किसी मौजूदा ऑब्जेक्ट में एक नई विधि जोड़ते हैं।
किसी ऑब्जेक्ट कंस्ट्रक्टर में विधियों को जोड़ना कंस्ट्रक्टर फ़ंक्शन के अंदर किया जाना चाहिए:
उदाहरण
function Person(firstName, lastName, age, eyeColor) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.eyeColor = eyeColor;
this.changeName = function (name) {
this.lastName = name;
};
}
चेंजनाम () फ़ंक्शन व्यक्ति की अंतिम नाम संपत्ति को नाम का मान निर्दिष्ट करता है।
अब आप कोशिश कर सकते हैं:
myMother.changeName("Doe");
जावास्क्रिप्ट जानता है कि आप किस व्यक्ति के बारे में बात कर रहे हैं, इसे myMother के साथ " प्रतिस्थापित " करके ।
बिल्ट-इन जावास्क्रिप्ट कंस्ट्रक्टर्स
जावास्क्रिप्ट में देशी वस्तुओं के लिए बिल्ट-इन कंस्ट्रक्टर हैं:
new String() // A new String object
new Number() // A new Number object
new Boolean() // A new Boolean object
new Object() // A new Object object
new Array() // A new Array object
new RegExp() // A new RegExp object
new Function() // A new Function object
new Date() // A new Date object
Math()
वस्तु सूची में नहीं है । Math
एक वैश्विक वस्तु है। पर new
कीवर्ड का उपयोग नहीं किया जा सकता है
Math
।
क्या तुम्हें पता था?
जैसा कि आप ऊपर देख सकते हैं, जावास्क्रिप्ट में आदिम डेटा प्रकार String
, Number
, और के ऑब्जेक्ट संस्करण हैं Boolean
। लेकिन जटिल वस्तुओं को बनाने का कोई कारण नहीं है। आदिम मूल्य बहुत तेज हैं:
""
के बजाय स्ट्रिंग अक्षर का प्रयोग करें new String()
।
50
के बजाय संख्या अक्षर का प्रयोग करें new Number()
।
true / false
के बजाय बूलियन अक्षर का प्रयोग करें new Boolean()
।
{}
के बजाय वस्तु शाब्दिक का प्रयोग करें new Object()
।
[]
के बजाय सरणी अक्षर का प्रयोग करें new Array()
।
/()/
के बजाय पैटर्न अक्षर का प्रयोग करें new RegExp()
।
() {}
के बजाय फ़ंक्शन एक्सप्रेशन का उपयोग करें new Function()
।
उदाहरण
let x1 = ""; // new primitive string
let x2 = 0; // new primitive number
let x3 = false; // new primitive boolean
const x4 = {}; // new Object object
const x5 = []; // new Array object
const x6 = /()/ // new RegExp object
const x7 = function(){}; // new function
स्ट्रिंग ऑब्जेक्ट्स
आम तौर पर, तार आदिम के रूप में बनाए जाते हैं:firstName = "John"
लेकिन स्ट्रिंग्स को new
कीवर्ड का उपयोग करके ऑब्जेक्ट के रूप में भी बनाया जा सकता है:
firstName = new String("John")
जेएस स्ट्रिंग्स अध्याय में जानें कि स्ट्रिंग्स को ऑब्जेक्ट के रूप में क्यों नहीं बनाया जाना चाहिए ।
संख्या वस्तु
आम तौर पर, संख्याएं आदिम के रूप में बनाई जाती हैं:x = 30
new
लेकिन संख्याओं को कीवर्ड का उपयोग करके ऑब्जेक्ट के रूप में भी बनाया जा सकता है :
x = new
Number(30)
JS Numbers अध्याय में जानें कि संख्याओं को वस्तु के रूप में क्यों नहीं बनाया जाना चाहिए ।
बूलियन ऑब्जेक्ट्स
आम तौर पर, बूलियन आदिम के रूप में बनाए जाते हैं:x =
false
new
लेकिन बूलियन को कीवर्ड का उपयोग करके ऑब्जेक्ट के रूप में भी बनाया जा सकता है :
x = new Boolean(false)
JS Booleans अध्याय में जानें कि बूलियन्स को ऑब्जेक्ट के रूप में क्यों नहीं बनाया जाना चाहिए ।