वहाँ वास्तव में, एंबर वस्तुओं में निजी चर राशि के लिए एक रास्ता है इस प्रकार है:
MyObject = Ember.Object.extend({
init: function() {
// private variable
var a = 1;
// methods to get, set, or otherwise accesss the private variables
this.getA = function() {return a;};
this.setA = function(val) {a = val;}
// don't forget this!
this._super(...arguments);
}
});
अब कोशिश
o1 = MyObject.create()
o2 = MyObject.create()
o1.setA(42);
o2.getA(); //1
दूसरे शब्दों में, आप निजी चर घोषित करने के लिए है, और किसी भी गेटर्स, सेटर्स, या अन्य दिनचर्या जो उन्हें उपयोग करना चाहते हैं, init
हुक में। बेशक, इसका मतलब है कि उन गेटर्स/सेटर्स कक्षा के प्रत्येक उदाहरण पर इसके प्रोटोटाइप की बजाय उपस्थित होंगे। यह थोड़ा अक्षम है, लेकिन जावास्क्रिप्ट में कक्षाओं के लिए निजी चर के किसी भी दृष्टिकोण के लिए यह वही है।
यह एंबर वस्तुओं पर एक नया private: {}
हैश परिचय सकता है, लेकिन फिर एंबर मशीनरी का एक बहुत जरूरत है खोजने और वर्ग पदानुक्रम भर में निजी चर के लिए उपयोग को नियंत्रित करने को संभालने के लिए होगा बोधगम्य है। यह भाषा को फिर से डिजाइन या विस्तारित करने के बराबर होगा, जो एम्बर मिशन का हिस्सा नहीं है।
इस बीच, उपर्युक्त दृष्टिकोण ठीक काम करता है यदि निजी आवृत्ति चर की संख्या सीमित है और उन तक पहुंचने की आवश्यकता वाले दिनचर्या की संख्या छोटी है। तो स्वीकार किया गया जवाब जो कहता है असंभव है, ठीक है, गलत है।
स्रोत
2014-04-12 03:47:51
इसे मिला, thanx! दिलचस्प, एम्बर के लेखक इस प्रकार की कार्यक्षमता के साथ प्रतिबद्ध हैं –
आगंतुकों के लिए पांच साल बाद यहां आने के लिए, कृपया ध्यान रखें कि यह (स्वीकृत) उत्तर गलत है। –