यहाँ एक समाधान दिया गया है जो अन्य कई उत्तरों के साथ-साथ https://stackoverflow.com/a/7579956/1484513 है । यह एक निजी वर्ग (स्थिर) सरणी में निजी इंस्टेंस (गैर-स्थिर) चर को संग्रहीत करता है और यह जानने के लिए ऑब्जेक्ट आईडी का उपयोग करता है कि उस सरणी के किस तत्व में प्रत्येक उदाहरण से संबंधित डेटा है।
(->
i = 1
Object.defineProperty Object.prototype, "__id", { writable:true }
Object.defineProperty Object.prototype, "_id", { get: -> @__id ?= i++ }
)()
class MyClass
__ = []
_a = null
_b = null
c: null
_getA = -> a
getB: -> _b
getD: -> __[@._id].d
constructor: (a,b,@c,d) ->
_a = a
_b = b
__[@._id] = {d:d}
test1 = new MyClass 's', 't', 'u', 'v'
console.log 'test1', test1.getB(), test1.c, test1.getD()
test2 = new MyClass 'W', 'X', 'Y', 'Z'
console.log 'test2', test2.getB(), test2.c, test2.getD()
console.log 'test1', test1.getB(), test1.c, test1.getD()
console.log test1.a
console.log test1._a
class AnotherClass extends MyClass
test1 = new AnotherClass 's', 't', 'u', 'v'
console.log 'test1', test1.getB(), test1.c, test1.getD()
test2 = new AnotherClass 'W', 'X', 'Y', 'Z'
console.log 'test2', test2.getB(), test2.c, test2.getD()
console.log 'test1', test1.getB(), test1.c, test1.getD()
console.log test1.a
console.log test1._a
console.log test1.getA()