|
寫一個(gè)JS class時(shí),如
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
為了容易理解代碼,以及更好的區(qū)分public和private的變量,我通常用set...方法(...為某(些)成員變量)來(lái)賦值給類的成員。這些set方法當(dāng)然就是public的。還有一點(diǎn)就是使代碼能夠更規(guī)范一些。
然而問(wèn)題就出在這里,如果以上代碼不考慮驗(yàn)證有效性(或者只驗(yàn)證簡(jiǎn)單的有效性),那我們就會(huì)多出很多的代碼,試想一個(gè)類有20個(gè)成員(屬性),那么我們就得加20個(gè)set...方法,實(shí)在多余,因此,要想辦法來(lái)解決這個(gè)問(wèn)題。
回憶在Mozilla中,有__defineSetter__和__defineGetter__的方法來(lái)給DOM增加成員,給開(kāi)發(fā)人員帶來(lái)很多方便。我們也來(lái)仿一個(gè)js版的__defineSetter。
簡(jiǎn)單的思路:
利用JS動(dòng)態(tài)給對(duì)象增加方法(或?qū)傩裕?
但類中方法不必再添加set...此類方法。
非[a-z]區(qū)間的屬性也不再添加set...此類方法。
寫出實(shí)現(xiàn)代碼