जावास्क्रिप्ट ऑब्जेक्ट ।defineProperty ()

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) बदला जा सकता है।

अनुशंसित पढ़ना: जावास्क्रिप्ट ऑब्जेक्ट डिफाइनप्रोपरेटी ()

दिलचस्प लेख...