推 mrbigmouth:要設私有變數不就是不要給外部存取嗎? 02/22 16:31
→ mrbigmouth:幹嘛又設成私有變數又設一堆getter/setter? 02/22 16:31
→ mrbigmouth:(所以這個變數到底要不要給外部存取啊???) 02/22 16:31
→ mrbigmouth:還是回答一下問題好了....如果你想弄一個不給外界存但 02/22 16:33
→ mrbigmouth:能方便取用的變數...目前JS常見的作法的做法是在前方加 02/22 16:34
→ mrbigmouth:__底線以表示"拜托大家不要改這裡否則我就當機給你看" 02/22 16:34
→ mrbigmouth:在ECMAScript5 可以用writable去控制某物件屬性可不可 02/22 16:35
→ mrbigmouth:寫...也能直接定義getter跟setter 02/22 16:36
→ BBSealion:設getter和setter是因為"只能這樣來"仿造"私有變數的 02/22 16:53
→ BBSealion:效果,我查的到的是這樣啦 但也覺得很怪 所以上來問問看 02/22 16:53
→ BBSealion:不這樣做的話自己的method也叫不到他們了ORZ 02/22 17:02
推 lausai:推用底線+註解的方式宣告私有變數 用 nested function 很浪 02/22 17:11
→ lausai:費記憶體 因為你的 Class 每 new 出來一次那些 nested 02/22 17:11
→ lausai:function 就會多出一份實體 02/22 17:12
推 mrbigmouth:你絕對是誤會了什麼...私有變數就是不給人讀也不給人改 02/22 17:13
→ mrbigmouth:getter跟setter是提供外部合法進行存取的途徑 而非必要 02/22 17:14
→ mrbigmouth:比方說你可以只設getter不設setter所以外部就只能讀 02/22 17:15
→ mrbigmouth:也可以設setter但在其中設定檢查函式讓"只有合法的資料 02/22 17:15
→ mrbigmouth:"能進入私有變數 02/22 17:15
→ mrbigmouth:總而言之 你要在js用私有變數用var就好了 02/22 17:15
→ mrbigmouth:setter跟getter都不是必要的 只有某些時候會用到 02/22 17:16
→ mrbigmouth:硬要做私有變數又要弄getter/setter 所有語言都差不多 02/22 17:17
→ mrbigmouth:一樣麻煩 02/22 17:17
→ mrbigmouth:雖然有很多能讓語法變簡潔的lib/套件啦 02/22 17:18
→ BBSealion:to mrb大 可能我沒有描述清楚我的問題,我回文一篇我看 02/22 17:30
→ BBSealion:到的狀況 02/22 17:30
→ BBSealion:底線倒是個很簡單的做法XD 我可以試試看 雖然有點不舒服 02/22 17:31
→ BBSealion:話說單底線和雙底線,在js有很大的差別嗎 02/22 17:43
→ TonyQ:我直接講結論,在 JS 去追求真正外部不能 access 的 private 02/24 00:20
→ TonyQ:其實很多餘。另外底線什麼的只是 naming convention 沒有 02/24 00:20
→ TonyQ:實質效益。 02/24 00:20
→ TonyQ:另外 getter/setter 要不要作,取決於這個 properites 你 02/24 00:20
→ TonyQ:怎麼用,我不覺得一定要寫,但是也不覺得寫了一定多餘。 02/24 00:20
推 matrixki:getter setter寫不寫真的是看需不需要 即使不需要寫了 02/24 17:55
→ matrixki:debug也會用到 所以不致於多餘 02/24 17:55