寫一個JS class時,如 [Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]為了容易理解代碼,以及更好的區分public和private的變量,我通常用set...方法(...為某(些)成員 " /> 亚洲欧洲精品成人久久奇米网,69性欧美高清影院,欧美日韩网站在线观看

中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

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

寫注釋不是我的強項,有什么問題請在評論中寫出來:D

寫一個JS class時,如

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
為了容易理解代碼,以及更好的區分public和private的變量,我通常用set...方法(...為某(些)成員變量)來賦值給類的成員。這些set方法當然就是public的。還有一點就是使代碼能夠更規范一些。

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

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

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

寫出實現代碼

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
基本實現了_defineSetter,而我們要一個個的defineSetter豈不是太麻煩了。既然已經實現了原型,那么用原型來動態綁定到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...

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]本例DEMO及全部代碼:
http://www.never-online.NET/code/js/defineSetter/

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

JavaScript技術js defineSetter -給js的 "class"自動增加一個set的屬性(方法),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 亚洲欧美一区二区三区视频 | 欧美视频 亚洲视频 | h视频在线观看免费 | 国产午夜精品一区二区三区嫩草 | 精品一区av | 黄色精品| 国产美女h视频 | 亚洲综合色视频在线观看 | 中文字幕一区二区三区在线观看 | 天堂久久久久久久 | 亚洲精彩免费视频 | 美国黄色毛片 | 成人免费看电影 | 亚洲欧美日韩在线 | 亚洲精品中文字幕在线观看 | 999久久久久久久久6666 | 久久久久亚洲av毛片大全 | 东方伊人免费在线观看 | 亚洲成年在线 | 国产欧美一区二区三区免费 | a级大片免费观看 | 国产激情视频在线 | 日韩欧美在线观看视频 | www.日韩系列 | 免费在线视频精品 | 欧美日韩91 | www.操.com | 免费精品 | 亚洲视频免费在线观看 | 成人一区二区三区在线 | 国产精品免费一区二区三区四区 | 欧美日韩亚洲国产 | 91麻豆蜜桃一区二区三区 | 日韩精品 电影一区 亚洲 | 久久综合狠狠综合久久综合88 | 日韩快播电影网 | 欧美不卡 | 欧美中文在线 | 黄色免费三级 | 在线观看黄视频 | 欧美一区在线视频 |