• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
    當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

    擴(kuò)展JavaScript功能的正確方法(譯文)_javascript技巧

    來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 21:02:44
    文檔

    擴(kuò)展JavaScript功能的正確方法(譯文)_javascript技巧

    擴(kuò)展JavaScript功能的正確方法(譯文)_javascript技巧:早上看到《JavaScript 每周導(dǎo)讀》【第三期】一文,里面發(fā)現(xiàn)一篇文章(Extending JavaScript – The Right Way),覺(jué)得還不錯(cuò),翻譯過(guò)來(lái)跟大家共享,本文并不是逐字逐句進(jìn)行翻譯,盡量說(shuō)得通俗易懂。 原文地址:Extending JavaScript –
    推薦度:
    導(dǎo)讀擴(kuò)展JavaScript功能的正確方法(譯文)_javascript技巧:早上看到《JavaScript 每周導(dǎo)讀》【第三期】一文,里面發(fā)現(xiàn)一篇文章(Extending JavaScript – The Right Way),覺(jué)得還不錯(cuò),翻譯過(guò)來(lái)跟大家共享,本文并不是逐字逐句進(jìn)行翻譯,盡量說(shuō)得通俗易懂。 原文地址:Extending JavaScript –

    早上看到《JavaScript 每周導(dǎo)讀》【第三期】一文,里面發(fā)現(xiàn)一篇文章(Extending JavaScript – The Right Way),覺(jué)得還不錯(cuò),翻譯過(guò)來(lái)跟大家共享,本文并不是逐字逐句進(jìn)行翻譯,盡量說(shuō)得通俗易懂。

    原文地址:Extending JavaScript – The Right Way

    以下是譯文

      JavaScript已經(jīng)內(nèi)置了很多強(qiáng)大的方法,但有時(shí)你需要的某個(gè)功能在內(nèi)置的方法中沒(méi)有,我們?cè)趺磥?lái)優(yōu)雅地?cái)U(kuò)展JavaScript功能呢。
      例如我們想增加一個(gè)capitalize()方法來(lái)實(shí)現(xiàn)首字母大寫,通常我們這樣寫:
    代碼如下:
    if(!String.prototype.capitalize)
    {
    String.prototype.capitalize = function()
    {
    return this.slice(0,1).toUpperCase() + this.slice(1).toLowerCase();
    }
    }

      上面的代碼可以正常使用,但如果在某個(gè)地方有下面的代碼:
    代碼如下:
    var strings = "yay";
    for(i in strings) console.log(i + ":" + strings[i]);

      我們得到的結(jié)果是這樣的:
    0: y
    1: a
    2: y
    capitalize: function () { return this.slice(0, 1).toUpperCase() + this.slice(1).toLowerCase(); }
      這顯然不是我們想要的結(jié)果,輸出了我們?cè)黾拥姆椒ǖ脑蚴俏覀冊(cè)黾拥姆椒ǖ膃numerable屬性默認(rèn)為true。
      我們可以通過(guò)簡(jiǎn)單地把枚舉屬性(enumerable)設(shè)置為false避免這個(gè)問(wèn)題,使用defineProperty方法進(jìn)行功能的擴(kuò)展:
    代碼如下:
    if(!String.prototype.capitalize)
    {
    Object.defineProperty(String.prototype, 'capitalize',
    {
    value: function()
    {
    return this.slice(0,1).toUpperCase() + this.slice(1).toLowerCase();
    },
    enumerable: false
    });
    }

      現(xiàn)在我們?cè)龠\(yùn)行這段代碼:
    代碼如下:
    var strings = "yay";
    for(i in strings) console.log(i + ":" + strings[i]);

      我們得到的結(jié)果是:
    0: y
    1: a
    2: y
      要注意的是,用循環(huán)沒(méi)有輸出的并不代表不存在,我們可以通過(guò)下面的代碼查看到定義:
    代碼如下:
    var strings = "yay";
    console.log(strings.capitalize)

      會(huì)輸出:
    代碼如下:
    function () { return this.slice(0, 1).toUpperCase() + this.slice(1).toLowerCase(); }

      用這種方式擴(kuò)展JavaScript功能比較靈活,我們可以用這種方式來(lái)定義我們自己的對(duì)象,并設(shè)置一些默認(rèn)值。
      以下是另外幾個(gè)擴(kuò)展方法,你可以在自己的項(xiàng)目中使用:
      String.pxToInt()
      把"200px"這樣的字符串轉(zhuǎn)換為數(shù)字 200 :
    代碼如下:
    if(!String.prototype.pxToInt)
    {
    Object.defineProperty(String.prototype, 'pxToInt',
    {
    value: function()
    {
    return parseInt(this.split('px')[0]);
    },
    enumerable: false
    });
    }

      String.isHex()
      判斷一個(gè)字符串是否是16進(jìn)制表示的,如"#CCC" 或 "#CACACA"
    代碼如下:
    if(!String.prototype.isHex)
    {
    Object.defineProperty(String.prototype, 'isHex',
    {
    value: function()
    {
    return this.substring(0,1) == '#' &&
    (this.length == 4 || this.length == 7) &&
    /^[0-9a-fA-F]+$/.test(this.slice(1));
    },
    enumerable: false
    });
    }

      String.reverse()
      字符串反轉(zhuǎn):
    代碼如下:
    if(!String.prototype.reverse)
    {
    Object.defineProperty(String.prototype, 'reverse',
    {
    value: function()
    {
    return this.split( '' ).reverse().join( '' );
    },
    enumerable: false
    });
    }

      String.wordCount()
      統(tǒng)計(jì)單詞數(shù)量,用空格分開
    代碼如下:
    if(!String.prototype.wordCount)
    {
    Object.defineProperty(String.prototype, 'wordCount',
    {
    value: function()
    {
    return this.split(' ').length;
    },
    enumerable: false
    });
    }

      String.htmlEntities()
      html標(biāo)簽如<和>編碼為特殊字符
    代碼如下:
    if(!String.prototype.htmlEntities)
    {
    Object.defineProperty(String.prototype, 'htmlEntities',
    {
    value: function()
    {
    return String(this).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"');
    },
    enumerable: false
    });
    }

      String.stripTags()
      去掉HTML標(biāo)簽:
    代碼如下:
    if(!String.prototype.stripTags)
    {
    Object.defineProperty(String.prototype, 'stripTags',
    {
    value: function()
    {
    return this.replace(/<\/?[^>]+>/gi, '');
    },
    enumerable: false
    });
    }

      String.trim()
      去掉首尾空格:
    代碼如下:
    if(!String.prototype.trim)
    {
    Object.defineProperty(String.prototype, 'trim',
    {
    value: function()
    {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
    },
    enumerable: false
    });
    }

      String.stripNonAlpha()
      去掉非字母字符:
    代碼如下:
    if(!String.prototype.stripNonAlpha)
    {
    Object.defineProperty(String.prototype, 'stripNonAlpha',
    {
    value: function()
    {
    return this.replace(/[^A-Za-z ]+/g, "");
    },
    enumerable: false
    });
    }

      Object.sizeof()
      統(tǒng)計(jì)對(duì)象的大小,如{one: “and”, two: “and”}為2
    代碼如下:
    if(!Object.prototype.sizeof)
    {
    Object.defineProperty(Object.prototype, 'sizeof',
    {
    value: function()
    {
    var counter = 0;
    for(index in this) counter++;
    return counter;
    },
    enumerable: false
    });
    }

      這種方式擴(kuò)展JS原生對(duì)象的功能還是挺不錯(cuò)的,但除非必要(項(xiàng)目中用的很多),不建議直接在原生對(duì)象上擴(kuò)展功能,會(huì)造成全局變量污染。
      另外,文中的pxToInt()方法是沒(méi)什么必要的,JS中的parseInt()可以直接完成這樣的功能:parsetInt("200px")===200
      htmlEntities方法貌似有問(wèn)題,下面另提供一個(gè):
    代碼如下:
    if(!String.prototype.htmlEntities)
    {
    Object.defineProperty(String.prototype, 'htmlEntities',
    {
    value: function()
    {
    var div = document.createElement("div");
    if(div.textContent){
    div.textContent=this;
    }
    else{
    div.innerText=this;
    }
    return div.innerHTML;
    },
    enumerable: false
    });
    }

    聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    擴(kuò)展JavaScript功能的正確方法(譯文)_javascript技巧

    擴(kuò)展JavaScript功能的正確方法(譯文)_javascript技巧:早上看到《JavaScript 每周導(dǎo)讀》【第三期】一文,里面發(fā)現(xiàn)一篇文章(Extending JavaScript – The Right Way),覺(jué)得還不錯(cuò),翻譯過(guò)來(lái)跟大家共享,本文并不是逐字逐句進(jìn)行翻譯,盡量說(shuō)得通俗易懂。 原文地址:Extending JavaScript –
    推薦度:
    標(biāo)簽: 翻譯 的方法 java
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 久久久WWW免费人成精品| 国产精品亚洲综合专区片高清久久久| 国产精品香蕉在线观看| 国产精品无码免费播放| 免费精品精品国产欧美在线欧美高清免费一级在线 | 日韩精品在线视频| 精品视频一区二区三区| 精品国产成人国产在线观看| 亚洲精品无码MV在线观看| 久久久久久青草大香综合精品| 中文字幕精品久久| 国产精品久久久久久搜索| 久久久亚洲精品蜜桃臀| 国产三级精品三级在线专区1| 国产精品日韩深夜福利久久| 欧美肥屁VIDEOSSEX精品| mm1313亚洲国产精品无码试看| 亚洲国产第一站精品蜜芽| 久久99精品久久久久久9蜜桃| 2024国产精品极品色在线| 国产精品日韩欧美一区二区三区| 久久青草国产精品一区| 亚洲av无码成人精品区| 国产精品户外野外| 老司机精品影院91| 无码国产精品一区二区免费模式| 国产精品欧美亚洲韩国日本不卡 | 国产精品无码一区二区三级 | 国产综合成人色产三级高清在线精品发布| 黑人精品videos亚洲人| 国产精品一区二区久久精品无码| 中文字幕一区二区三区日韩精品| laowang在线精品视频| 日本精品久久久久久久久免费| 久久精品欧美日韩精品| 无码精品人妻一区二区三区影院| 99re热这里只有精品视频中文字幕| 国産精品久久久久久久| 2022年国产精品久久久久| 亚洲av午夜国产精品无码中文字| 亚洲欧洲国产精品你懂的|