Skip to content

Instantly share code, notes, and snippets.

@changtimwu
Created September 25, 2012 07:20
Show Gist options
  • Save changtimwu/3780432 to your computer and use it in GitHub Desktop.
Save changtimwu/3780432 to your computer and use it in GitHub Desktop.
# 只會被執行一次, 而不是每次new 都執行
myvar_init = ->
console.log 'got myvar_init'
3
# class 不是典型的declare , class內所有的member 都佔有實體, class member 真正在做的是設定初始值, 而非type
class Packet
debugFlags : false
stpMac: new Buffer [ 0x01, 0x80, 0xc2, 0x00, 0x00, 0x00 ]
stpPdu:
llc: new Buffer [0x42, 0x42, 0x03]
myvar: (myvar_init()+15; -50)
dosome: ->
@stpMac[0]+=1
qq: 99
#這樣總共有三份 pkt1, pkt2, Packet
pkt1 = new Packet
console.log 'Packet::myvar = ', Packet::myvar
console.log 'pkt1.myvar = ', pkt1.myvar
pkt1.myvar=4
Packet::myvar=8
pkt2 = new Packet
console.log 'Packet::myvar = ', Packet::myvar
console.log 'pkt1.myvar = ', pkt1.myvar
console.log 'pkt2.myvar = ', pkt2.myvar
pkt1.debugFlags = true
pkt2.debugFlags = false
console.log 'pkt1 debug flags =', pkt1.debugFlags
console.log 'pkt2 debug flags =', pkt2.debugFlags
#buffer 只是傳 reference, 所以三個一起共享 stpMac
console.log 'pkt1.stpPdu = ', pkt1.stpPdu
pkt1.stpMac[0]=0x99
console.log 'pkt1.stpMac = ', pkt1.stpMac
console.log 'pkt2.stpMac = ', pkt2.stpMac
pkt1.dosome()
console.log 'pkt1.stpMac = ', pkt1.stpMac
pkt1.dosome()
console.log 'pkt2.stpMac = ', pkt2.stpMac
# 用class 去new 兩個便
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment