नोट: मैं पहले से ही नीचे तो सवाल और 7 जवाब माध्यम से चला गया इससे पहले कि आप वोट Symbols के बारे में, WeekMaps और मानचित्र (अब तक), कृपया पूर्ण प्रश्न पढ़ें: Private properties in JavaScript ES6 classes
अनुच्छेद: https://esdiscuss.org/topic/es7-property-initializersपहुँच संशोधक (निजी, संरक्षित) ES6 में
नीचे मेरी Simple Class
है जो, निजी सार्वजनिक और संरक्षित गुण और तरीके शामिल हैं।
'use strict';
class MyClass {
constructor() {
this.publicVar = 'This is Public Variable';
this.privateVar = 'This is Private Variable';
this.protectedVar = 'This is Protected Variable';
} // Public Constructor Method.
publicMethod() {
console.log(' Accessing this.publicVar: ', this.publicVar);
console.log(' Accessing this.privateVar: ', this.privateVar);
console.log(' Accessing this.protectedVar: ', this.protectedVar);
return 'Its Public Method'
} // Public Method.
privateMethod() {return 'Its Private Method'} // Private Method.
protectedMethod() {return 'Its Protected Method'} // Protected Method.
foo() {
this.publicMethod();
this.privateMethod();
this.protectedMethod();
} // Public Method
} // end class
मैं वस्तु instantiating रहा हूँ और सार्वजनिक विधि है जो अपेक्षा के अनुरूप काम कर रहा है बुला।
let MyObject = new MyClass;
MyObject.foo(); // Works fine.
console.log(MyObject.publicVar); // Works
console.log(MyObject.publicMethod()); // Works
उम्मीद कार्यशील के रूप में।
अब मेरा प्रश्न। मुझे पता है कि सिंबल जैसी कुछ चीजें ईएस 6 विनिर्देश में हैं, ईएस 6 कक्षाओं पर काम कर रहे संरक्षित और निजी चर/विधियों को पाने के लिए वर्तमान कार्यवाही क्या है।
console.log(MyObject.privateVar); // Works
console.log(MyObject.privateMethod()); // Works
मैं इस संपत्ति और विधि चाहते हैं केवल अपने ही वर्ग में दिखाई दे सकता है।
console.log(MyObject.protectedVar); // Works
console.log(MyObject.protectedMethod()); // Works
मैं इस संपत्ति और विधि अपने ही वर्ग है और यह विस्तार अंदर कक्षाओं में दिखाई देना चाहते हैं। इस व्यवहार को प्राप्त करने के
वर्कअराउंड/बेहतर समाधान
यदि आप पहले ही सिंबल और वीकैप के बारे में पढ़ते हैं, तो आपको और क्या जानने की आवश्यकता है? –
मैं उन लोगों के माध्यम से गया हूं लेकिन उदाहरण को उम्मीद कर रहा हूं कि प्रतिबंधित और विस्तारित वर्ग के दायरे के उत्तर के रूप में –
ईएस 6 कक्षाओं में निजी/सुरक्षित जानबूझकर सुरक्षित नहीं है: [यहां देखें] (http://stackoverflow.com/a/22158732/ 250 9 123) वीकैप/प्रतीक उन्हें ईएस 6 कक्षाओं में जोड़ने के लिए एक कामकाज है, लेकिन जावा और सी # जैसी भाषाओं में "क्लासिक" ओओ कक्षाओं को दोहराने के बजाय, ईएस 6 कक्षाएं विधियों को परिभाषित करने का एक तरीका है। –