ईएस 6 गेटर्स और सेटर्स के पास जावा में समान अवधारणाओं की तुलना में काफी अलग प्रेरणा है।
जावा में, गेटर्स और सेटर्स कक्षा को जावाबीन को परिभाषित करने की अनुमति देते हैं। गेटर्स और सेटर्स का बिंदु यह है कि यह बीन को सार्वजनिक क्षेत्रों द्वारा निहित एक पूरी तरह से ऑर्थोगोनल "इंटरफेस" रखने की अनुमति देता है। तो मेरे पास एक फ़ील्ड "नाम" हो सकता है जो जावाबीन संपत्ति नहीं है, और मेरे पास जावाबीन संपत्ति "पता" हो सकती है जो फ़ील्ड नहीं है।
जावाबीन गुण जावा प्रतिबिंब के माध्यम से हजारों ढांचे (उदाहरण के लिए हाइबरनेट) द्वारा "खोजने योग्य" भी हैं। इस प्रकार, गेटर्स और सेटर्स बीन गुणों को "उजागर" करने के लिए मानक विधि का हिस्सा हैं।
गेटर्स और सेटर्स, कार्यों के रूप में, यह भी मानते हैं कि वे कार्यान्वयन "अमूर्त" हैं। यह किसी भी क्षेत्र या एक गणना ("सिंथेटिक") मूल्य हो सकता है। तो अगर मेरे पास "ज़िप कोड" नामक एक बीन संपत्ति है, जो संग्रहीत स्ट्रिंग के रूप में शुरू होती है। अब मान लीजिए कि मैं इसे पता/शहर/राज्य से गणना मूल्य मानना चाहता हूं?
अगर मैं एक क्षेत्र का उपयोग करें, इस कोड टूट जाता है:
String zipcode = address.zipcode();
लेकिन अगर मैं एक गेटर उपयोग करते हैं, यह नष्ट नहीं होती है:
String zipcode = address.getZipcode();
जावास्क्रिप्ट JavaBeans ऐसा कुछ भी नहीं है। जहां तक मैंने पढ़ा है, जीईटी और एसईटी का इच्छित मूल्य उपरोक्त "सिंथेटिक" (गणना) गुणों तक ही सीमित है।
लेकिन यह जावा में कुछ हद तक बेहतर है जबकि जावा आपको एक विधि में "फ़ील्ड" को संगत रूप से परिवर्तित करने की अनुमति नहीं देता है, ES6 GET और SET इसे अनुमति देता है।
यही है, अगर मेरे पास है:
var zipcode = address.zipcode;
अगर मैं एक गेटर करने के लिए एक मानक वस्तु संपत्ति होने से ज़िपकोड बदलने के लिए, ऊपर कोड अब प्राप्त फ़ंक्शन को कॉल।
ध्यान दें कि अगर मैंने परिभाषा में जीईटी शामिल नहीं किया है, तो यह ज़िप कोड प्राप्त नहीं करेगा। इसके बजाए, यह केवल var को फ़ंक्शन ज़िपकोड असाइन करेगा।
तो मुझे लगता है कि यह betweeen जावा और जावास्क्रिप्ट ES6 गेटर्स और सेटर्स को समझने के लिए कुछ महत्वपूर्ण भेद हैं।
यह सी # में समान है, अगर आपको इसके बारे में पता चल जाता है। –
संबंधित: [GetProperty/setProperty सम्मेलन पर ES6 गेटर्स और सेटर्स का उपयोग करने के लिए तर्क क्या है?] (Http://stackoverflow.com/q/32114468/1048572) – Bergi
अच्छा आलेख केवल यह समझा जा सकता है: https://coryrylan.com/blog/javascript-es6-class-syntax "उपरोक्त हमारी कक्षा में हमारे नाम संपत्ति के लिए गेटटर और सेटर है। हम '_' सम्मेलन का उपयोग हमारी नाम संपत्ति को स्टोर करने के लिए बैकिंग फ़ील्ड बनाने के लिए करते हैं। यह हर बार मिलता है या सेट कहा जाता है, यह एक ढेर ओवरफ्लो का कारण बनता है "... यह वैरिएबल के बारे में भी बोलता है जो वास्तव में 'निजी' नहीं है, लेकिन जेएस कक्षाओं में निजी वर्र्स बनाने के कई नए तरीके हैं; मेरा पसंदीदा सिर्फ टाइपस्क्रिप्ट का उपयोग कर रहा है, लेकिन मैंने प्रतीक दृष्टिकोण का भी उपयोग किया है – webdevinci