डैनियल एरेनबर्ग और जेफ मॉरिसन द्वारा "स्टेटिक क्लास फीचर्स" नामक एक स्टेज 3 ECMAScript प्रस्ताव है जिसका उद्देश्य इस समस्या को हल करना है। स्टेज 3 "क्लास फील्ड्स" प्रस्ताव के साथ, भविष्य का कोड इस तरह दिखेगा:
class MyClass {
static myStaticProp = 42;
myProp = 42;
myProp2 = this.myProp;
myBoundFunc = () => { console.log(this.myProp); };
constructor() {
console.log(MyClass.myStaticProp);
console.log(this.myProp);
this.myBoundFunc();
}
}
इसके बाद के संस्करण के बराबर है:
class MyClass {
constructor() {
this.myProp = 42;
this.myProp2 = this.myProp;
this.myBoundFunc = () => { console.log(this.myProp); };
console.log(MyClass.myStaticProp);
console.log(this.myProp);
this.myBoundFunc();
}
}
MyClass.myStaticProp = 42;
बैबल @ बैबल / प्लगइन-प्रपोजल-क्लास-प्रॉपर्टीज़ ( स्टेज -3 प्रीसेट में शामिल ) के माध्यम से क्लास फील्ड ट्रांसप्लान्टिंग का समर्थन करता है , ताकि आप अपने जावास्क्रिप्ट रनटाइम का समर्थन न करने पर भी इस सुविधा का उपयोग कर सकें।
@ Kangax के एक गॉटर घोषित करने के समाधान की तुलना में, यह समाधान अधिक प्रदर्शनशील भी हो सकता है, क्योंकि यहां संपत्ति को फ़ंक्शन के माध्यम से कॉल करने के बजाय सीधे एक्सेस किया जाता है।
यदि यह प्रस्ताव स्वीकार हो जाता है, तो यह जावास्क्रिप्ट कोड को इस तरह से लिखना संभव होगा, जो जावा और C Java जैसी पारंपरिक ऑब्जेक्ट-ओरिएंटेड भाषाओं के समान है।
संपादित करें : एक एकीकृत वर्ग फ़ील्ड प्रस्ताव अब चरण 3 पर है; बाबेल v7.x संकुल को अद्यतन करें।
संपादित करें (फरवरी 2020) : स्थिर वर्ग सुविधाओं को एक अलग प्रस्ताव में विभाजित किया गया है। धन्यवाद @ GOTO0!