CoffeeScript: Accelerated JavaScript Development详细介绍了这个例子:
class Tribble
constructor: ->
@isAlive = true
Tribble.count++
# Prototype properties
breed: -> new Tribble if @isAlive
die: ->
Tribble.count--
if @isAlive
@isAlive = false
# Class-level properties
@count: 0
@makeTrouble: -> console.log ('Trouble!' for i in [1..@count]).join(' ')
class-level
属性与Prototype
属性之间的区别是什么?
答案 0 :(得分:2)
每个类对象存在一个类级别属性,而不是在每个实例上单独存在。
因此,在您的示例中,所有实例只能访问一个变量count
,而不是每个实例化对象都有一个单独的成员变量。
其他语言会将这些类级别的项称为“静态”属性或方法。
可以直接使用类级属性或方法,而无需实际拥有该类型对象的实例,因为它们仅特定于类,而不是特定于该类的对象实例。原型方法只能在实际的实例化对象上调用。