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

關于__defineGetter__ 和__defineSetter__的說明

 更新時間:2007年05月12日 00:00:00   作者:  
作者:anbutu
來源:http://anbutu.javaeye.com/blog/post/194276
關鍵字: JavaScript   Mozilla __defineGetter__ __defineSetter__

Getter是一種獲取一個屬性的值的方法,Setter是一種設置一個屬性的值的方法??梢詾槿魏晤A定義的核心對象或用戶自定義對象定義getter和setter方法,從而為現(xiàn)有的對象添加新的屬性。
有兩種方法來定義Getter或Setter方法:

在對象初始化時定義 
在對象定義后通過Object的__defineGetter__、__defineSetter__方法來追加定義 
在使用對象初始化過程來定義Getter和Setter方法時唯一要做的事情就是在getter方法前面加上“get”,在setter方法前面加上“set”。
還有一點要注意的就是getter方法沒有參數(shù),setter方法必須有一個參數(shù),也就是要設置的屬性的新值。
例如:

復制代碼 代碼如下:

o = {    
    value:9,    
    get b() {return this.value;},    
    set setter(x) {this.value = x;}    
}    

在對象定義后給對象添加getter或setter方法要通過兩個特殊的方法__defineGetter__和__defineSetter__。這兩個函數(shù)要求第一個是getter或setter的名稱,以string給出,第二個參數(shù)是作為getter或setter的函數(shù)。
例如我們給Date對象添加一個year屬性:

復制代碼 代碼如下:

Date.prototype.__defineGetter__('year', function() {return this.getFullYear();});    
Date.prototype.__defineSetter__('year', function(y) {this.setFullYear(y)});    

var now = new Date;    
alert(now.year);    
now.year = 2006;    
alert(now);    

至于采用哪種形式主要取決于個人的編程風格,采用第一種形式結(jié)構(gòu)緊湊,更容易理解。但是假如你想在對象定義以后再添加Getter或Setter,或者這個對象的原型不是你寫的或是內(nèi)置對象,那么只好采用第二種方式了。
下面是一個為Mozilla瀏覽器添加innerText屬性的實現(xiàn):

復制代碼 代碼如下:

HTMLElement.prototype.__defineGetter__     
(    
   "innerText",function()    
   //define a getter method to get the value of innerText,     
   //so you can read it now!     
   {    
      var textRange = this.ownerDocument.createRange();    
      //Using range to retrieve the content of the object    
      textRange.selectNodeContents(this);    
      //only get the content of the object node    
      return textRange.toString();    
      // give innerText the value of the node content    
   }    
); 

相關文章

最新評論

叶城县| 栖霞市| 长垣县| 黄石市| 丹寨县| 成武县| 镇坪县| 林芝县| 陆良县| 当雄县| 文成县| 克什克腾旗| 台北县| 阆中市| 阿拉善右旗| 龙海市| 京山县| 萍乡市| 微博| 阜新市| 雷波县| 同江市| 化州市| 正定县| 高州市| 兰州市| 聂拉木县| 邹城市| 甘德县| 衡山县| 台江县| 五华县| 清原| 锦屏县| 白河县| 沂水县| 和田市| 辽中县| 进贤县| 广东省| 灵川县|