นี่คือวิธีการแก้ปัญหาที่สามารถดึงหลายคำตอบอื่น ๆ ที่นี่บวกhttps://stackoverflow.com/a/7579956/1484513 มันเก็บตัวแปรอินสแตนซ์ส่วนตัว (ไม่คงที่) ในอาร์เรย์คลาสส่วนตัว (คงที่) และใช้ ID อ็อบเจ็กต์เพื่อทราบว่าองค์ประกอบใดของอาร์เรย์นั้นมีข้อมูลที่เป็นของอินสแตนซ์
(->
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()