Skip to content

Instantly share code, notes, and snippets.

@changtimwu
Created October 11, 2012 00:55
Show Gist options
  • Save changtimwu/3869502 to your computer and use it in GitHub Desktop.
Save changtimwu/3869502 to your computer and use it in GitHub Desktop.
coffeescript class variable scope
class myclass
local_var=[]
local_func = ->
local_var+=1
local_func_wrong = ->
@myclass.class_var++ # wrong! no way to access class var
@inst_var++ # wrong! no way to access instance var
@class_var:0 # class variable
@class_func: -> # class function
local_func() # you can call local function
local_var++ # you can access local variable
@class_var=4 # you can access class variable through @ operator
@class_func_wrong: ->
inst_var=3 # wrong! you can't access instance variable
inst_func() # wrong! you can't call instance function
inst_var: 0 # instance variable
inst_func: -> # instance function
@inst_var++ # you can access instance variable through @ operator
local_func() # you can call local function
local_var++ # you can access local variables
myclass.class_func() # you can call class function via prefixing the classname.
myclass.class_var++ # you can access class variable via prefixing the classname.
i1 = new myclass()
i2 = new myclass()
i1.inst_var++ # you can access an instance's variable
i2.inst_func() # you can call an instance's function
i1.class_var++ # wrong! you can't access an instance's class variable
i1.class_func() # wrong! you can't call an instance's class function
myclass.class_func() # you can access a class's function
myclass.class_var++ # you can access a class's variable
i2.local_var++ # wrong! you can't access an instance's class's local var
i2.local_func() # wrong! you can't call an instance's class's local var
@changtimwu
Copy link
Author

simple rules

  • 需要多份的
    • 宣告成 instance var
  • 只要一份的
    • 只有class 內部要存取的 -> 宣告成 local var
    • 外部也要能存取 -> 宣告成class var

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment