मैं नीचे दिखाए गए वर्ग संपत्ति के अंदर कई कार्यों को घोंसला करना चाहता हूं।
दुर्भाग्यवश, उन्हें कक्षा के मुख्य दायरे तक पहुंच नहीं मिलेगी।कॉफ़ीस्क्रिप्ट कक्षाओं में स्कोप
क्या मैं प्रत्येक नेस्टेड फ़ंक्शन को this
पर संदर्भित किए बिना इसे हल कर सकता हूं?
class myClass
constructor: -> @errors = []
doSomething: -> @errors.push "I work as expected"
functions:
doStuff: ->
@errors.push "I cant access @errors" # => TypeError: Cannot call method 'push' of undefined
ugly: (context) ->
context.errors.push "It works, but I am ugly" # Works fine but requires scope injection
गैर काम वैकल्पिक सुझाव वसा तीर का उपयोग:
class myClass
constructor: ->
@errors = []
@functions:
doStuff: =>
@errors.push "I wont work either" # TypeError: Cannot call method 'toString' of undefined
वैकल्पिक विकल्प है, जो वैश्विक this.errors
संपत्ति के बारे में नहीं है: (परिणाम के रूप में
class myClass
constructor: ->
@functions =
errors: []
doStuff: ->
@errors.push "I will write to functions.errors only"
उन्हें कन्स्ट्रक्टर में/@ को बाध्य करना? – biziclop
आपका मतलब है 'कन्स्ट्रक्टर: -> @ लेर्स = [] @ फ़ंक्शन: डूस्टफ -> ...'? – Industrial
शायद वसा तीर => http://coffeescript.org/#fat_arrow का उपयोग कर मैं एक कॉफ़ीस्क्रिप्ट मास्टर नहीं हूं, क्षमा करें :) – biziclop