1. 程式人生 > >給JS物件新增擴充套件方法

給JS物件新增擴充套件方法

    如何在JS中像C#語法一樣,呼叫str.Trim()呢?

    在JS中string物件自己也有trim方法,可通過str.trim()實現

    在jQuery中jquery物件也封裝了trim方法,可通過$.trim(str)實現

    可是對於TrimStart,TrimEnd的方法,JS的string物件並沒有對應方法,jquery也同樣沒有封裝。所以對於使用非常多的方法,我們可以自己封裝。這裡拿Trim的一組方法為例,如下

1.給jQuery物件新增擴充套件

jQuery.extend({
    trim: function (text) {//jQuery已自帶
        return text.replace(/(^\s*)|(\s*$)/g, "");
    },
    trimLeft: function (text) {
        return text.replace(/(^\s*)/g, '');
    },
    trimRight: function (text) {
        return text.replace(/(\s*$)/g, '');
    }
})

2.給JS的String物件新增擴充套件

/*
*字串去除兩側空格或指定字元
*注意:引數str中如果包含正則通配字元,如"."請改引數為"\\."
*/
String.prototype.trimAll = function (str) {//js1.8版本以上自帶trim,這裡改名強烈建議不重複構寫方法
    str = (str ? str : "\\s");
    str = ("(" + str + ")");
    var reg_trim = new RegExp("(^" + str + "*)|(" + str + "*$)", "g");
    return this.replace(reg_trim, "");
};

/*
*字串去除左側空格或指定字元
*注意:引數str中如果包含正則通配字元,如"."請改引數為"\\."
*/
String.prototype.trimLeft = function (str) {
    str = (str ? str : "\\s");                            //沒有傳入引數的,預設去空格
    str = ("(" + str + ")");
    var reg_lTrim = new RegExp("^" + str + "*", "g");     //拼正則
    return this.replace(reg_lTrim, "");
}

/*
*字串去除右側空格或指定字元
*注意:引數str中如果包含正則通配字元,如"."請改引數為"\\."
*/
String.prototype.trimRight = function (str) {
    str = (str ? str : "\\s");
    str = ("(" + str + ")");
    var reg_rTrim = new RegExp(str + "*$", "g");
    return this.replace(reg_rTrim, "");
}

如何呼叫

            var str = '       空格    ';
            var res1 = str.trim();
            var res2 = $.trim(str);
            var res3 = str.trimLeft();
            var res4 = $.trimRight(str);