2009-07-02 15 views
20

किसी भी कारण से, कस्टम ऑब्जेक्ट्स के लिए Javascript getters/setters किसी भी ब्राउज़र के साथ काम करने लगता है लेकिन आईई।आईई में जावास्क्रिप्ट गेटर्स/सेटर्स?

क्या आईई के पास इसके लिए कोई अन्य गैर मानक तंत्र है? (कई अन्य विशेषताओं के साथ)

यदि नहीं, तो क्या समान कार्यक्षमता प्राप्त करने के लिए कोई कामकाज है?

+1

IE9 पर एक नजर डालें और IE10 अब इस का समर्थन: http: //kangax.github.com/es5-compat-table/ –

+0

वे ऑब्जेक्ट अक्षर पर समर्थित हैं, लेकिन IE में प्रोटोटाइप ऑब्जेक्ट नहीं करते हैं :(http://robertnyman.com/javascript/javascript-getters-setters.html # नियमित-गेटर्स-और-सेटर्स – roguenet

उत्तर

8

आईई 8 में defineProperty है, लेकिन केवल डीओएम ऑब्जेक्ट्स के लिए है। लेकिन माना जाता है कि यह अंततः जावास्क्रिप्ट वस्तुओं के लिए भी आ जाएगा।

+4

आखिरकार? एस ओ हम इसे आईई 10 में देखेंगे? ;) –

+0

दिलचस्प - मुझे पता नहीं था कि यह जोड़ा गया था! @musicfreak: आप और आपके धूप आशावाद ... – Shog9

+27

हम इसे आईई 10 में देख सकते हैं, लेकिन हम अभी भी आईई 6 के लिए कोडिंग करेंगे। – Nosredna

5

रेजिग का पोस्ट पहली बार अपने env.js कार्यान्वयन को संदर्भित करता है जब वह गेटर्स और सेटर्स पद्धति का उपयोग करता है जिसे आप ढूंढ रहे हैं। उनके लिए काम करने की इस शैली का कारण यह है कि उनका उपयोग ब्राउज़र आधारित वातावरण में नहीं किया जा रहा है, env.js मुख्य रूप से सर्वर-साइड जेएस या राइनो जैसे स्क्रिप्टिंग वातावरण के लिए केंद्रित है।

ब्राउज़र संगतता को संभालने के साथ-साथ जावास्क्रिप्ट बहुत अच्छी तरह से पहलू पर ध्यान केंद्रित करने के लिए, ऑब्जेक्ट गुणों की सुरक्षा के लिए अपने गेटर और सेटर विधियों के बंद होने का उपयोग करें।

उदाहरण के लिए:

foo: function(val) { 
    var bar = val; 
    this.setBar: function(newBar) { 
     bar = newBar; 
    }, 
    this.getBar: function() { 
     return bar; 
    } 
} 

कौन सा परिणाम देगा में:

var checkFoo = foo("cool!"); 
alert(checkFoo.getBar()); //cool! 
checkFoo.setBar("nice!"); 
alert(checkFoo.getBar()); //nice! 
+3

यह अभी भी 3 साल बाद अच्छी सलाह है? इस संगतता तालिका को देखकर लगता है कि यानी बेहतर है या नहीं: http://kangax.github.com/es5-compat-table/ –

3

के लिए IE6 + एक समाधान उपलब्ध है कि onpropertychange घटना और नए कल्पना defineProperty उपयोग करता है। मामूली पकड़ यह है कि आपको अपना वैरिएबल एक डोम ऑब्जेक्ट बनाना होगा।

पूर्ण विवरण:

http://johndyer.name/native-browser-get-set-properties-in-javascript/

2

पुराने IE के लिए ब्राउज़र आप भी वीबी उपयोग कर सकते हैं अनुकरण करने के लिए गेटर और सेटर इस getters & setters for all IE with cross browser VBClass!

+0

आप जो लिंक प्रदान किया है उसके मूल विवरण को जोड़ना चाहते हैं। चूंकि यह (आपकी प्रतिक्रिया) खड़ा है, यद्यपि सही है, क्या यूआरएल आप अनुपलब्ध होने के लिए लिंक कर रहे हैं, यह कम सहायक हो जाएगा। – talegna

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