最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js defineSetter -給js的 "class"自動增加一個set的屬性(方法)

 更新時間:2007年06月02日 00:00:00   作者:  
寫注釋不是我的強項,有什么問題請在評論中寫出來:D

寫一個JS class時,如

為了容易理解代碼,以及更好的區(qū)分public和private的變量,我通常用set...方法(...為某(些)成員變量)來賦值給類的成員。這些set方法當然就是public的。還有一點就是使代碼能夠更規(guī)范一些。

然而問題就出在這里,如果以上代碼不考慮驗證有效性(或者只驗證簡單的有效性),那我們就會多出很多的代碼,試想一個類有20個成員(屬性),那么我們就得加20個set...方法,實在多余,因此,要想辦法來解決這個問題。

回憶在Mozilla中,有__defineSetter__和__defineGetter__的方法來給DOM增加成員,給開發(fā)人員帶來很多方便。我們也來仿一個js版的__defineSetter。

簡單的思路:
利用JS動態(tài)給對象增加方法(或?qū)傩裕?
但類中方法不必再添加set...此類方法。
非[a-z]區(qū)間的屬性也不再添加set...此類方法。

寫出實現(xiàn)代碼

[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]

基本實現(xiàn)了_defineSetter,而我們要一個個的defineSetter豈不是太麻煩了。既然已經(jīng)實現(xiàn)了原型,那么用原型來動態(tài)綁定到Function對象上,一行代碼就解決了set..方法了。
Function.prototype.defineAllSetter = function (hdle) {

  for (var i in this.prototype)
  _defineSetter.apply(this, [this,i,hdle]);

  return this;

};

接下來就是再綁定一個defineSetter給Function對象。

Function.prototype.defineSetter = function (p, hdle) {

  return _defineSetter.apply(this, 
  [this].concat(Array.prototype.slice.call(arguments,0)));

};

OK!基本完成想要的功能。try it...
本例DEMO及全部代碼:
http://www.never-online.net/code/js/defineSetter/

當然,我們還可以加入驗證~,具體的代碼我就不再多寫了,呵呵,已經(jīng)實現(xiàn)了,有興趣的朋友也試著玩一下:D。 

相關(guān)文章

最新評論

都昌县| 蚌埠市| 玉林市| 宣威市| 鹤岗市| 宝清县| 诸城市| 西林县| 洪江市| 襄垣县| 桐乡市| 乐昌市| 新宁县| 石门县| 宜章县| 阳谷县| 宜宾市| 铜梁县| 晋城| 邯郸县| 蛟河市| 砀山县| 台州市| 仙居县| 大厂| 正安县| 日土县| 子洲县| 客服| 呼和浩特市| 德庆县| 台山市| 彭泽县| 元朗区| 常宁市| 郯城县| 长宁区| 清远市| 福建省| 华坪县| 吕梁市|