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

javascript中的__defineGetter__和__defineSetter__介紹

 更新時間:2014年08月15日 10:08:41   投稿:junjie  
這篇文章主要介紹了javascript中的__defineGetter__和__defineSetter__介紹,類似面向?qū)ο笳Z言中的get和set關(guān)鍵字,需要的朋友可以參考下

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

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

1.在對象初始化時定義
2.在對象定義后通過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 
       }

相關(guān)文章

  • JS響應鼠標點擊實現(xiàn)兩個滑塊區(qū)間拖動效果

    JS響應鼠標點擊實現(xiàn)兩個滑塊區(qū)間拖動效果

    這篇文章主要介紹了JS實現(xiàn)的兩個滑塊區(qū)間拖動效果代碼,涉及JavaScript響應鼠標事件針對頁面元素的動態(tài)操作技巧,需要的朋友可以參考下
    2015-10-10
  • 解決layui中onchange失效以及form動態(tài)渲染失效的問題

    解決layui中onchange失效以及form動態(tài)渲染失效的問題

    今天小編就為大家分享一篇解決layui中onchange失效以及form動態(tài)渲染失效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 前端本地文件獲取excel表格內(nèi)容并渲染在頁面的方法

    前端本地文件獲取excel表格內(nèi)容并渲染在頁面的方法

    這篇文章主要介紹了前端本地文件獲取excel表格內(nèi)容并渲染在頁面的方法,主要利用SheetJS插件用于處理Excel文件,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-03-03
  • EditPlus 正則表達式 實戰(zhàn)(3)

    EditPlus 正則表達式 實戰(zhàn)(3)

    這篇文章主要介紹了EditPlus 正則表達式 實戰(zhàn)(3)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • 詳解JS對象遍歷的順序問題

    詳解JS對象遍歷的順序問題

    你知不知道JS對象遍歷順序,本文就來詳細的介紹了一下JS對象遍歷順序問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • javascript 包裹節(jié)點 提高效率

    javascript 包裹節(jié)點 提高效率

    模仿jQuery,創(chuàng)建幾個包裹節(jié)點的方法,發(fā)現(xiàn)jQuery的方法很低效啊,下一次他又可以說這幾個方法可以提升了多少多少了。
    2010-02-02
  • WebStorm中如何將自己的代碼上傳到github示例詳解

    WebStorm中如何將自己的代碼上傳到github示例詳解

    這篇文章主要介紹了WebStorm中如何將自己的代碼上傳到github,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • JavaScript防止表單重復提交的方法

    JavaScript防止表單重復提交的方法

    在web開發(fā)中,防止表單的重復提交是一個非常重要的環(huán)節(jié)。重復提交會導致數(shù)據(jù)混亂,甚至可能導致系統(tǒng)崩潰,今天我們將帶領大家從小白級別到大神級別的程序員,一起來學習如何在實際項目中避免表單的重復提交
    2023-04-04
  • 17道題讓你徹底理解JS中的類型轉(zhuǎn)換

    17道題讓你徹底理解JS中的類型轉(zhuǎn)換

    這篇文章主要給大家介紹了關(guān)于如何通過17道題讓你徹底理解JS中的類型轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用JS具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • 基于JS實現(xiàn)禁止查看源碼及獲取鍵盤的按鍵值

    基于JS實現(xiàn)禁止查看源碼及獲取鍵盤的按鍵值

    這篇文章主要介紹了基于JS實現(xiàn)禁止查看源碼及獲取鍵盤的按鍵值,本文結(jié)合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02

最新評論

嘉鱼县| 华蓥市| 新巴尔虎左旗| 兴安盟| 固原市| 田东县| 紫阳县| 泰州市| 葫芦岛市| 田东县| 华蓥市| 广南县| 乐清市| 子长县| 长顺县| 乌鲁木齐市| 禹州市| 涟水县| 诏安县| 呼伦贝尔市| 延安市| 铜山县| 普格县| 凌源市| 墨脱县| 德阳市| 香港 | 繁峙县| 磐石市| 乐山市| 涞源县| 九江县| 修武县| 馆陶县| 乐安县| 察隅县| 泾源县| 湟源县| 文水县| 塘沽区| 通化县|