Object.defineProperty तुम क्या चाहते है।
उदाहरण के लिए:
var obj = {};
Object.defineProperty(obj, 'key', {
enumerable: false,
configurable: false,
writable: false,
value: 'static'
});
Wil मान के साथ "obj.key" परिभाषित करें "स्थिर" है और यह केवल पढ़ने के लिए किया जाएगा।
- संख्यात्मक अर्थ यह है कि किसी वस्तु के गुणों की गणना करते समय यह दिखाया जाएगा (या नहीं)।
- लिखने योग्य साधन यदि आप इसे पढ़ना चाहते हैं, तो आप झूठ बोलेंगे। लिखा न जाए।
- गलत होने पर कॉन्फ़िगर करने योग्य यदि आप नहीं चाहते हैं कि यह ऑब्जेक्ट से हटाया जा सके।
संक्षेप में, उन्हें सभी को झूठी डालकर, आप वस्तु पर स्थिरांक बना रहे हैं। बीटीडब्ल्यू, उनके डिफ़ॉल्ट झूठ पर होना है।
तो प्रभावी रूप से यह कर:
Object.defineProperty(obj, 'property', { value: 'value'});
'obj' नामक मान 'मान' के साथ 'संपत्ति' पर एक निरंतर पैदा करेगा। या आप यह
function setConstant(obj, key, value)
{
Object.defineProperty(obj, key, {value: value });
}
var obj = {};
setConstant(obj, "constantName", "constantValue");
इसे बहुत पठनीय बना देगा।
हाँ एक प्रकार का स्थिरांक परिभाषित करने के लिए एकमात्र क्रॉस-ब्राउज़र संगत तरीका है बंद करने का उपयोग करना और उस चर को एक्सेस करने के तरीकों को प्रदान करना (जैसे कि यह एक निजी चर था ...)। लेकिन मेरी समस्या डेवलपर उपयोगकर्ता को obj.MY_CONSTANT के रूप में स्थिर से मूल्य प्राप्त करने के लिए प्रदान करना था ताकि आपका बाद का समाधान फिट न हो। तो, अंत में, इसके लिए (आईई भी 8 बनाम) भयानक और असंगत ब्राउज़र हम डेवलपर को हमेशा खराब समाधान और हमारे समय बर्बाद करना चाहिए। जब एम $ समझ जाएगा कि वेब डेवलपर मानक चाहता है ????? – xdevel2000
जब कोई एम $ और मानकों के बारे में शिकायत करना चाहता है तो मैं आमतौर पर ऑब्जेक्ट नहीं करूंगा, लेकिन इस मामले में यह अनुचित लगता है क्योंकि जावास्क्रिप्ट स्थिरांक किसी भी विनिर्देश का हिस्सा नहीं हैं, वे मोज़िला विशिष्ट हैं। – Prestaul
हां, लेकिन मैं 'मानक डी फैक्टो' और कॉन्स से संबंधित था, __defineGetter__ और इसी तरह के लिए समर्थित हैं उदा। वेबकिट इंजन (क्रोम आदि) द्वारा। इसके अलावा XMLHttpRequest ऑब्जेक्ट एक डब्ल्यू 3 सी मानक नहीं है (इसका आविष्कार एम $ द्वारा किया गया था) लेकिन इसे सभी द्वारा अपनाया गया है। – xdevel2000