2013-07-18 6 views
5

किसी ऑब्जेक्ट को किसी संपत्ति को निर्दिष्ट करने और इसे परिभाषित करने के बीच क्या अंतर है? कौन सा बेहतर है और कैसे?संपत्ति को परिभाषित और असाइन करने के बीच अंतर

यह

Object.defineProperty(obj,p,propDesc) 

या बस

obj.p="someValue"; 
+0

ए * संपत्तिडिस्प्टर * 'कुछ' * मूल्य * नहीं है? – Bergi

+0

[परिभाषा बनाम असाइनमेंट] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/15989483/definition-versus-assignment) – givanse

उत्तर

2

Object.defineProperty आपको लगता है कि संपत्ति के बारे में विकल्प की एक पूरी गुच्छा बना सकते हैं। enumerable और writable की तरह।

जब आप obj.p = 'something'; करते हैं, तो आप "डिफ़ॉल्ट" विकल्पों के साथ एक संपत्ति सेट कर रहे हैं।

न तो "बेहतर" है, उनमें से प्रत्येक का अपना उपयोग होता है। आप जो भी उपयोग करते हैं वह आपकी आवश्यकताओं पर निर्भर करता है।

+0

संपत्ति असाइनमेंट अक्सर किसी ऑब्जेक्ट में नई गुण जोड़ने के लिए उपयोग किया जाता है। मेरी पोस्ट ने समझाया कि इससे समस्याएं पैदा हो सकती हैं। इसलिए, सरल नियमों का पालन करना सबसे अच्छा है: यदि आप कोई नई संपत्ति बनाना चाहते हैं, तो परिभाषा का उपयोग करें। यदि आप किसी संपत्ति का मूल्य बदलना चाहते हैं, तो असाइनमेंट का उपयोग करें। –

+1

@ माईसेरे: नहीं। इन मामलों में जिनके कारण समस्याएं होती हैं, सामान्य कोड में मौजूद नहीं होती हैं, और आपको हर जगह असाइनमेंट का उपयोग करना चाहिए। – Bergi

0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

पर पाया के रूप में " इस विधि एक वस्तु पर एक संपत्ति की या संशोधन करने के लिए सटीक अलावा अनुमति देता है। काम के माध्यम से सामान्य संपत्ति अलावा गुण जो संपत्ति गणना (के लिए ... पाश में या के दौरान दिखाई बनाता है Object.keys विधि), जिनके मान बदला जा सकता है, और जिसे हटाया जा सकता है। यह विधि इन अतिरिक्त विवरणों को उनके डिफ़ॉल्ट से बदलने की अनुमति देती है। "

संबंधित मुद्दे