JavaScript 扩展代码

更具需要写的几个扩展。

扩展核心自执行函数 Object.extend

 



/**
     * 对象扩展体 参数是 {属性|方法:属性值|方法体}
     * 只执行实现
     *
     * 实例对基础对象 进行新加一个alert_方法 实现弹出当前的对象 对数组。以及string都有效
     *   实例   Object.extend({alert_:function(){alert(this)}});
     * @type {Function}
     */
    (Object.extend  = Object.prototype.extend = function(){
        var args =arguments, length = args.length,i= 0,$key;
        for(;i<length;i++){
            for(var name in ($key = args[i])){
             this.prototype[name] = $key[name];
            }
        }
    })();
    /**
     * 判断对象是否是函数
     * */
    Object.extend({isFunc:function(){return this instanceof Function}});

    /**
     * 判断指定的值是都是函数
     */
    function isFunc(obj){
        return obj instanceof Function;
    }

    /**
     * 数组扩展
     */
    Array.extend({
        /**
         *  根据value 返回数组的下一个单元 给定的单元是最后一个的话。将返回false
         *   @returns {*}
         */
        next: function(value){
            var i = false;
            for(var key in this){
                if(isFunc(this[key])) continue;
                if(i){ return this[key]; }
                else if(this[key]==value) i = !0;
            }
            return i;
        },
        /**
         *  根据value 返回数组的上一个单元 给定的单元是第一个的话。将返回false
         *   @returns {*}
         */
        prev : function(value){
            var prevVal = false;
            for(var key in this){
                if(isFunc(this[key])) continue;
                if(this[key] == value) return prevVal;
                else prevVal = this[key];
            }
            return prevVal;
        },
        /**
         * 返回数组的keys
         * @returns {Array}
         */
        keys : function(){
            var newArray = [],k= 0;
            for(var i in this){
                if(isFunc(this[i])) continue;
                newArray[k++] = i;
            }
            return newArray;
        },
        /**
         * 返回数组的values
         * @returns {Array}
         */
        values : function(){
            var newArray = new Array(),k=0;
            for(var i in this){
                if(isFunc(this[i])) continue;
                 newArray[k++] = this[i];
            }
            return newArray;
        }
    });

    /**
     * 字符串扩展
     */
    String.extend({
        /**
         * 根据字符转取得 img 标签的属性 默认获取 img 的src属性值
         * @returns {Array}
         * @constructor
         */
        getImgAttr:function(){
        var reg = /<img[^>]+src="[^"]+"[^>]*>/gi,result = this.match(reg),imgSrc = [],attr = arguments[0] || "src", reg2 = new RegExp(attr+'="([^"]+)"','g');
        for (var i=0; i<result.length; i++) {
            reg2.exec(result),imgSrc[i] = RegExp.$1;
        }
        return imgSrc;
    }
    });

    var string = '<p><br /><a target="_blank" href="/html/news/uploadfiles/131011/201310110928071827.jpg"><img alt="" src="/html/news/uploadfiles/131011/201310110928071827.jpg" /></a><br /></p></div><div class="ListImgBox"><p><br /><a target="_blank" href="/html/news/uploadfiles/131011/201310110923007763.jpg"><img alt="" src="/html/news/uploadfiles/131011/201310110923007763.jpg" />';
    alert(string.getImgAttr());