2017-02-20 10 views
9

मुझे पता है कि जावास्क्रिप्ट में गेटर और सेटर कैसे काम करते हैं। जो मुझे समझ में नहीं आता है, हम उन्हें क्यों जरूरत करते हैं जब हम सामान्य कार्यों का उपयोग करके एक ही परिणाम प्राप्त कर सकते हैं? निम्नलिखित कोड पर विचार करें:जावास्क्रिप्ट में गेटर्स और सेटर्स का उपयोग क्यों करें?

var person = { 
    firstName: 'Jimmy', 
    lastName: 'Smith', 
    get fullName() { 
     return this.firstName + ' ' + this.lastName; 
    } 
} 

console.log(person.fullName); // Jimmy Smith 

हम आसानी से एक समारोह के साथ गेटर की जगह ले सकता:

var person = { 
    firstName: 'Jimmy', 
    lastName: 'Smith', 
    fullName: function() { 
     return this.firstName + ' ' + this.lastName; 
    } 
} 

console.log(person.fullName()); // Jimmy Smith 

मैं गेटर और सेटर लिखने की बात नहीं दिख रहा।

+0

आपका प्रश्न किस बारे में बेहतर है ?, या यह कैसे करते हैं? –

+4

मुझे लगता है कि यह सिर्फ एक "शैली" मामला है, क्योंकि आपको उनका उपयोग करने की आवश्यकता नहीं है, यदि आप –

+1

की जांच करना चाहते हैं तो आप उन्हें "कर सकते हैं" [http://] [http://stackoverflow.com/a/ 28222366/2545680) और [यह] (http://stackoverflow.com/questions/1568091/why-use-getters-and-setters) –

उत्तर

3

गेटर या सेटर का उपयोग करने और मानक फ़ंक्शन का उपयोग करने के बीच एक अंतर यह है कि गेटर्स/सेटर्स स्वचालित रूप से असाइनमेंट पर आते हैं। तो यह एक सामान्य संपत्ति की तरह दिखता है लेकिन दृश्यों के पीछे आप असाइनमेंट के ठीक पहले या बाद में चलाने के लिए अतिरिक्त तर्क (या चेक) प्राप्त कर सकते हैं।

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

+1

और सवाल यह है कि 'foo.bar = baz' एक सेटर का उपयोग कर' foo.setBar (baz) 'से बेहतर है ... – deceze

+0

प्रश्न जो भी आप समझते हैं उससे थोड़ा अलग था, लाभ को स्पष्ट करने के लिए दूसरा पैराग्राफ जोड़ा गया। –

+0

मान लीजिए कि आप शुरुआत से एक इंटरफ़ेस डिज़ाइन करने के बजाय गेटर्स/सेटर्स का उपयोग करने के लिए तैयार कर रहे हैं ... तो आपका जवाब क्या है? – deceze

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