国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript中的__defineGetter__和__defineSetter__介紹

2024-05-06 16:07:39
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了javascript中的__defineGetter__和__defineSetter__介紹,類似面向對象語言中的get和set關鍵字,需要的朋友可以參考下
 
 

Getter是一種獲取一個屬性的值的方法,Setter是一種設置一個屬性的值的方法。可以為任何預定義的核心對象或用戶自定義對象定義getter和setter方法,從而為現有的對象添加新的屬性。

有兩種方法來定義Getter或Setter方法:

1.在對象初始化時定義
2.在對象定義后通過Object的__defineGetter__、__defineSetter__方法來追加定義

在使用對象初始化過程來定義Getter和Setter方法時唯一要做的事情就是在getter方法前面加上“get”,在setter方法前面加上“set”。

還有一點要注意的就是getter方法沒有參數,setter方法必須有一個參數,也就是要設置的屬性的新值。

例如:

復制代碼代碼如下:

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

 

在對象定義后給對象添加getter或setter方法要通過兩個特殊的方法__defineGetter__和__defineSetter__。這兩 個函數要求第一個是getter或setter的名稱,以string給出,第二個參數是作為getter或setter的函數。

例如我們給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);

 

至于采用哪種形式主要取決于個人的編程風格,采用第一種形式結構緊湊,更容易理解。但是假如你想在對象定義以后再添加Getter或Setter,或者這個對象的原型不是你寫的或是內置對象,那么只好采用第二種方式了。

下面是一個為Mozilla瀏覽器添加innerText屬性的實現:

復制代碼代碼如下:

 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  
       }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 合阳县| 阿勒泰市| 木兰县| 岢岚县| 吕梁市| 鄂州市| 黄陵县| 广南县| 桃源县| 防城港市| 全州县| 泾川县| 吉木萨尔县| 宁南县| 枣阳市| 西安市| 大余县| 富民县| 武义县| 青海省| 内丘县| 张家口市| 洛阳市| 耒阳市| 广安市| 革吉县| 临颍县| 临沭县| 澄迈县| 余干县| 东城区| 海晏县| 郓城县| 环江| 德保县| 洛南县| 巫山县| 资中县| 佛冈县| 金川县| 盈江县|