JavaScript Object.defineProperty () विधि किसी ऑब्जेक्ट पर मौजूदा प्रॉपर्टी को जोड़ती या संशोधित करती है और ऑब्जेक्ट को लौटा देती है।
defineProperty()
विधि का सिंटैक्स है:
Object.defineProperty(obj, prop, descriptor)
defineProperty()
विधि, एक स्थिर विधि जा रहा है, का उपयोग करते हुए कहा जाता है Object
वर्ग के नाम।
डिफाइनप्रोपर्टी () पैरामीटर्स
defineProperty()
विधि में लेता है:
- obj - वह वस्तु जिस पर संपत्ति को परिभाषित करना है।
- प्रोप - नाम या
Symbol
संपत्ति को परिभाषित या संशोधित करने के लिए। - डिस्क्रिप्टर - परिभाषित या संशोधित की जा रही संपत्ति के लिए डिस्क्रिप्टर।
ऑब्जेक्ट में मौजूद प्रॉपर्टी डिस्क्रिप्टर दो प्रकार के होते हैं: डेटा डिस्क्रिप्टर और एक्सेसर डिस्क्रिप्टर। उनके पास निम्नलिखित वैकल्पिक गुण हो सकते हैं।
configurable
enumerable
एक डेटा विवरणक भी हो सकता है:
value
writable
एक एक्सेसर डिस्क्रिप्टर भी हो सकता है:
get
set
डिफाइनप्रोपर्टी () से वापसी मान
- फ़ंक्शन को दी गई ऑब्जेक्ट लौटाता है।
ध्यान दें:
- डिफ़ॉल्ट रूप से, उपयोग
Object.defineProperty()
किए गए मान अपरिवर्तनीय हैं और गणना योग्य नहीं हैं। - एक विवरणक के न है
value
,writable
,get
औरset
चाबियाँ, यह एक डेटा वर्णनकर्ता के रूप में व्यवहार किया जाता है। एक विवरणक दोनों है, तोvalue
याwritable
औरget
याset
चाबियाँ, एक अपवाद फेंक दिया है।
उदाहरण: ऑब्जेक्ट में डेटा गुण जोड़ना
let obj = (); // with a data property descriptor Object.defineProperty(obj, "property1", ( value: 788, writable: true, enumerable: true, configurable: true, )); console.log(obj.property1); // 788 // with an accessor property descriptor Object.defineProperty(obj, "property2", ( get() ( console.log("Getting Value… "); return val; ), set(newVal) ( console.log("Setting Value… "); val = newVal; ), enumerable: true, configurable: true, )); obj.property2 = 6969; // Setting Value… console.log(obj.property2); // 6969
आउटपुट
788 सेटिंग वैल्यू… वैल्यू हो रही है… 6969
हम डेटा और एक्सेसर प्रॉपर्टी डिस्क्रिप्टर दोनों को मिक्स नहीं कर सकते क्योंकि यह एक एरर फेंक देगा।
किसी संपत्ति को संशोधित करने के लिए, वस्तु की writable
संपत्ति होनी चाहिए true
, अन्यथा यह संशोधित नहीं होगी और सख्त मोड में त्रुटि को फेंक देगी।
enumerable
संपत्ति विशेषता को परिभाषित करता है संपत्ति के द्वारा उठाया गया है या नहीं Object.assign()
या प्रसार के ऑपरेटर।
configurable
एक ही समय में विशेषता नियंत्रण संपत्ति उसके गुण वस्तु से और क्या नष्ट कर दिया जा सकता है या (के अलावा अन्य value
और writable
) बदला जा सकता है।
अनुशंसित पढ़ना: जावास्क्रिप्ट ऑब्जेक्ट डिफाइनप्रोपरेटी ()