Tôi muốn viết một lớp trợ giúp tĩnh trong coffeescript. Điều này có khả thi không?
lớp học:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
sử dụng:
Box2DUtility.drawWorld(w,c);
Tôi muốn viết một lớp trợ giúp tĩnh trong coffeescript. Điều này có khả thi không?
lớp học:
class Box2DUtility
constructor: () ->
drawWorld: (world, context) ->
sử dụng:
Box2DUtility.drawWorld(w,c);
Câu trả lời:
Bạn có thể xác định các phương thức của lớp bằng cách đặt tiền tố chúng bằng @
:
class Box2DUtility
constructor: () ->
@drawWorld: (world, context) -> alert 'World drawn!'
# And then draw your world...
Box2DUtility.drawWorld()
Demo: http://jsfiddle.net/ambiguous/5yPh7/
Và nếu bạn muốn mình drawWorld
hoạt động như một hàm tạo thì bạn có thể nói new @
như thế này:
class Box2DUtility
constructor: (s) -> @s = s
m: () -> alert "instance method called: #{@s}"
@drawWorld: (s) -> new @ s
Box2DUtility.drawWorld('pancakes').m()
this
, đó chỉ là cách hoạt động của JavaScript nên bạn không thể làm gì với nó. Chúng ta cũng không thực sự có các lớp, chỉ có các đối tượng, nguyên mẫu và các hàm khởi tạo nên thuật ngữ này thậm chí còn bị nhầm lẫn hơn. Việc gắn các hàm làm thuộc tính của hàm khởi tạo (đó là những gì đang xảy ra ở đây) là phương thức tương đương gần nhất với một phương thức lớp mà chúng ta có. Kiểm tra JavaScript Box2DUtility::drawWorld
sẽ không hoạt động.
constructor: (@s) ->
Cũng sẽ hoạt động trong ví dụ thứ hai? (tức là, thay vì bài tập thủ công@s = s
)