各种封装

var Too = (function() {
    var $ = {};
    $.cookie = function(name, value, options) {
        if (typeof value !== ‘undefined‘) {
            options = options || {};
            if (value === null) {
                value = ‘‘;
                options = $.extend({}, options);
                options.expires = -1;
            }
            var expires = ‘‘;
            if (options.expires && (typeof options.expires === ‘number‘ || options.expires.toUTCString)) {
                var date;
                if (typeof options.expires === ‘number‘) {
                    date = new Date();
                    date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
                } else {
                    date = options.expires;
                }
                expires = ‘; expires=‘ + date.toUTCString();
            }
            var path = options.path ? ‘; path=‘ + (options.path) : ‘;path=/‘;
            var domain = options.domain ? ‘; domain=‘ + (options.domain) : ‘‘;
            var secure = options.secure ? ‘; secure‘ : ‘‘;
            document.cookie = [name, ‘=‘, encodeURIComponent(value), expires, path, domain, secure].join(‘‘);
        } else {
            var cookieValue = null;
            if (document.cookie && document.cookie !== ‘‘) {
                var cookies = document.cookie.split(‘;‘);
                for (var i = 0; i < cookies.length; i++) {
                    var cookie = $.trim(cookies[i]);
                    if (cookie.substring(0, name.length + 1) === (name + ‘=‘)) {
                        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                        break;
                    }
                }
            }
            return cookieValue;
        }
    }
    $.removeCookie = function(key) {
        $.cookie(key, ‘‘, {
            expires: -1
        });
    }
    $.sendData = function(options) {
        var mat = options.url.match(/https?:\/\/([^\/]+)/);
        if (mat && location.host != mat[0]) {
            $.jsonp(options);
        } else {
            $.ajax(options);
        }
    }
    $.jsonp = function(options) {
        options = options || {};
        if (!options.url) {
            throw new Error("Parameter is not valid");
        }
        var callbackName = (‘jsonp_‘ + Math.random()).replace(".", "");
        var oHead = document.getElementsByTagName(‘head‘)[0];
        //options.data[options.callback] = callbackName;
        //var params = formatParams(options.data);
        var oS = document.createElement(‘script‘);
        oHead.appendChild(oS);
        window[callbackName] = function(json) {
            oHead.removeChild(oS);
            clearTimeout(oS.timer);
            window[callbackName] = null;
            options.success && options.success(json);
        };
        if (options.url.indexOf(‘?‘) == -1) {
            oS.src = options.url + ‘?callback=‘ + callbackName;
        } else {
            oS.src = options.url + ‘&callback=‘ + callbackName;
        }
        if (options.time) {
            oS.timer = setTimeout(function() {
                window[callbackName] = null;
                oHead.removeChild(oS);
                options.fail && options.fail({
                    message: "timeOut"
                });
            }, time);
        }
    }
    $.ajax = function(options) {
        options = options || {};
        options.type = (options.type || "GET").toUpperCase();
        options.dataType = options.dataType || "json";
        var params = formatParams(options.data);
        if (window.XMLHttpRequest) {
            var xhr = new XMLHttpRequest();
        } else {
            var xhr = new ActiveXObject(‘Microsoft.XMLHTTP‘);
        }
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4) {
                var status = xhr.status;
                if (status >= 200 && status < 300) {
                    options.success && options.success(xhr.responseText, xhr.responseXML);
                } else {
                    options.fail && options.fail(status);
                }
            }
        }
        if (options.type == "GET") {
            xhr.open("GET", options.url + "?" + params, true);
            xhr.send(null);
        } else if (options.type == "POST") {
            xhr.open("POST", options.url, true);
            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xhr.send(params);
        }
    }
    $.storage = function(st, key, value, expires) {
            if (st == ‘l‘) {
                st = window.localStorage;
                expires = expires || 60;
            } else {
                st = window.sessionStorage;
                expires = expires || 5;
            }
            if (typeof value != ‘undefined‘) {
                try {
                    return st.setItem(key, JSON.stringify({
                        data: value,
                        expires: new Date().getTime() + expires * 1000 * 60
                    }));
                } catch (e) {}
            } else {
                var result = JSON.parse(st.getItem(key) || ‘{}‘);
                if (result && new Date().getTime() < result.expires) {
                    return result.data;
                } else {
                    st.removeItem(key);
                    return null;
                }
            }
        }
    /**
     * 去掉空格
     * @name    trim
     * @param   {String}  要去掉空格的字符串
     * @param   {Boolean} 是否去掉字符串中间的空格
     * @return  {String}  处理过的字符串
     */
    $.trim = function(str, is_global) {
        if (!str) return "";
        var result = str.replace(/(^\s+)|(\s+$)/g, "");
        if (is_global) result = result.replace(/\s/g, "");
        return result;
    }
    /**
     * 获得URL中以GET方式传输的参数
     * @name getParamByName
     * @param {String} 要获得的参数名
     * @return {String} 指定参数名的值
     */
    $.getParamByName = function(name) {
        var match = new RegExp(‘[?&]‘ + name + ‘=([^&]*)‘).exec(window.location.search);
        return match && decodeURIComponent(match[1].replace(/\+/g, ‘ ‘));
    }
    $.extend = function(target) {
            var deep, args = [].slice().call(arguments, 1)
            if (typeof target == ‘boolean‘) {
                deep = target
                target = args.shift()
            }
            args.forEach(function(arg) {
                extend(target, arg, deep)
            })
            return target
        }
        /**
         * @取当前时间 2014-01-14
         * @return 2014-01-14
         */
    $.getDay = function(separator) {
        if (typeof(separator) == ‘undefined‘) {
            separator = ‘-‘;
        }
        var myDate = new Date();
        var year = myDate.getFullYear();
        var month = myDate.getMonth() + 1;
        month = month < 10 ? ‘0‘ + month : month;
        var day = myDate.getDate();
        day = day < 10 ? ‘0‘ + day : day;
        return year + separator + month + separator + day;
    }

    /**
     * @取当前时间 12:11:10
     * @return 14:44:55
     */
    $.getTime = function(separator, hasMs) {
        if (typeof(separator) == ‘undefined‘) {
            separator = ‘:‘;
        }
        var myDate = new Date();
        var hour = myDate.getHours();
        hour = hour < 10 ? ‘0‘ + hour : hour;
        var mint = myDate.getMinutes();
        mint = mint < 10 ? ‘0‘ + mint : mint;
        var seconds = myDate.getSeconds();
        seconds = seconds < 10 ? ‘0‘ + seconds : seconds;
        var ms = myDate.getMilliseconds();
        var result = hour + separator + mint + separator + seconds;
        if (typeof(hasMs) != ‘undeinfed‘ && hasMs) {
            result += separator + ms;
        }
        return result;
    }

    /**
     * @取当前时间戳
     * @return 1439361919265
     */
    $.getTimestamp = function() {
            return new Date().getTime();
        }
        /**
         * @对象merage
         * @obj2的权重大
         */
    $.merageObj = function(obj1, obj2) {
        for (var p in obj2) {
            try {
                if (obj2[p].constructor == Object) {
                    obj1[p] = $.merageObj(obj1[p], obj2[p]);
                } else {
                    obj1[p] = obj2[p];
                }
            } catch (e) {
                obj1[p] = obj2[p];
            }
        }
        return obj1;
    }
    /**
     * @inArray
     * @param {Array} arr 主体
     * @param {String} str字符串
     * @param {Boolean} include是否和匹配的字符串完全相同或者是包含的关系
     */
    $.inArray = function(arr, str, include) {
        if (util.isArray(arr)) {
            var res = false;
            arr.forEach(function(item) {
                if (typeof(include) != ‘undefined‘ && include) {
                    var reg = new RegExp(str, ‘gm‘)
                    if (reg.test(item)) {
                        res = true;
                    }
                } else {
                    if (item == str) {
                        res = true;
                    }
                }
            });
            return res;
        }
    }
    /**
     * @数组去重
     * @算法: 设置成一个对象的属性
     */
    $.uniq = function(arr) {
        if (isArray(arr)) {
            var obj = {};
            for (var i = 0; i < arr.length; i++) {
                obj[arr[i]] = i;
            }
            arr = [];
            var j = 0;
            for (var i in obj) {
                arr[j] = i;
                j += 1;
            }
        }
            return arr;
        }
    /**
     * @getUrlParam
     * @time 2014-10-8
     */
    $.getUrlParam = function(url) {
        var urlParseRE = /^(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/;
        return urlParseRE.exec(url);
    }
    return $;
})()

    function extend(target, source, deep) {
        for (key in source)
            if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {
                if (isPlainObject(source[key]) && !isPlainObject(target[key]))
                    target[key] = {}
                if (isArray(source[key]) && !isArray(target[key]))
                    target[key] = []
                extend(target[key], source[key], deep)
            } else if (source[key] !== undefined) target[key] = source[key]
    }

    function isPlainObject(obj) {
        return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype
    }

    function isArray(object) {
        return object instanceof Array
    }

    function formatParams(data) {
        var arr = [];
        for (var name in data) {
            arr.push(encodeURIComponent(name) + ‘=‘ + encodeURIComponent(data[name]));
        }
        return arr.join(‘&‘);
    }
    module.exports = Too;
时间: 2024-10-11 10:17:12

各种封装的相关文章

python学习 面向对象封装

from collectoins import namedtuplePoint=namedtuple('point',['x','y'])t1=Point(1,2)print(t1.x)print(t1.y)没有方法的类属性不会发生变化    定义简单 不能改变面向对象封装私有属性!!!私有方法!!!用装饰器描述的几个方法@property !!!@classmethod!!@staticmethod! 封装:class Teacher:     def __init__(self,name,p

python—面向对象的封装

封装 私有属性 class Teacher: __identifier = 'Teacher' #私有静态属性 def __init__(self,name,pwd) self.name = name self.__pwd = pwd #私有属性 内部使用,外部不能使用 def pwd(self): print(self.__pwd) alex = Teacher('alex','3714') alex.pwd() class Teacher: __identifier = 'Teacher'

dbutils封装对象,单列,一行一列(用)

基本用法:查找并封装对象与对象集合 public User findUserByNamePassword(String name,String password){ QueryRunner runner = new QueryRunner(DataSourceUtils.getDataSource()); String sql = "select * from user where name='"+name+"' and password = '"+password

python基础--接口与归一化设计、封装、异常、网络编程

1 接口与归一化设计 1.1 归一化概念: 归一化的好处: 1.归一化让使用者无需关心对象的类是什么,只需要知道这些对象都具备某些功能就可以了,这极大降低了使用者的使用难度. 2.归一化使得高层的外部使用者可以不加区分的处理所有接口兼容的对象集合 继承的两种用途 一:继承基类的方法,并且做出自己改变或者扩展(代码重用):实践中,继承的这种用途意义并不很大,甚至常常是有害的.因为它使得子类与基类出现强耦合. 二:声明某个子类兼容于某基类,定义一个接口类(模仿java的Interface),接口类中

自动化测试框架 selenium api的封装

接上一篇 http://tianxietaotao.blog.51cto.com/12002420/1951701 这篇我大概介绍下我这个工具的简单介绍 先上图: 制作背景: Web自动化测试在现在测试领域已经越来越普遍,但是写代码对于好多测试猿代码基础较弱,搭建系统也比较麻烦.所以我抽闲暇时间做了这个简单的工具:下面简单介绍下功能 工具简单介绍: 1.工具栏:Resume:调试阶段执行到下一个断点 next:单步执行 debug/run 模式切换 执行.停止 2.用例树:用例采用execl或者

lambda表达式封装对数据库的查询

前言: 1.为什么要封装lambda表达式数据库查询,原因有一下几点: 1.1.在以往的开发中进行数据库表查询时,其实所需要的字段就是其中几个,但是在开发中,开发者往往习惯select * 进行查询,当数据多和用户量多时,查询的效率会降低. 1.2.在写查询where条件的时候,总是用string.format去拼接字符串,开发效率低. 1.3.代码不够优雅,代码中嵌套和多sql语句,如果是表字段发生改变时编译器检查不出来,代码出错的概率大. 1.4.本着 write less  do more

Android封装TitleBar基本适用所有常规开发

Android封装TitleBar基本适用所有常规开发 github地址:https://github.com/SiberiaDante/SiberiaDanteLib/blob/master/sample/src/main/notes/TitleBar.md 主要实现:(后续会继续完善,喜欢的给个star,感谢支持) 使用方法 allprojects { repositories { ... aven { url 'https://jitpack.io' } } } dependencies

将数据库从服务器移到浏览器--indexedDB基本操作封装

数据库是属于服务器的,这是天经地义的事,但是有时候数据也许并非需要存储在服务器,但是这些数据也是一条一条的记录,怎么办?今天来带领你领略一下H5的一个新特性--indexedDB的风骚.你会情不自禁的发出感叹--不可思议! 一.链接数据库 indexedDB没有创建数据库的概念,你可以直接链接数据库,如果你链接的数据库并不存在,那么会自动的创建一个数据库.看下面的这个例子. <!DOCTYPE html> <html lang="en"> <head>

Java基础——封装

最近学习Java面向对象方面的知识点,一直没时间更新博客,因为这块的知识点真的蛮绕的.一个知识点一个知识点的往外冒,而且对于我这个初学者来说区分构造器和方法就花费了一整天的时间.现在准备再重新过一遍知识点. 先背下来一个理念: 面向对象程序设计是将数据放在第一位的,然后再考虑操作数据的方法. 之前,再学习Java的优越性的时候,我们知道了Java是一种面向对象设计的程序设计语言.那到底什么是面向对象程序设计呢?要弄懂它,首先我们简单了解一下另一种程序设计. 一.面向过程程序设计: 面向过程程序设

转 常见视频编码方式以及封装格式

常见视频编码方式以及封装格式 常见视频编码方式 所谓视频编码方式就是指通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式.视频流传输中最为重要的编解码标准有国际电联的H.261.H.263.H.264.H.265,运动静止图像专家组的M-JPEG和国际标准化组织运动图像专家组的MPEG系列标准,此外在互联网上被广泛应用的还有Real-Networks的RealVideo.微软公司的WMV以及Apple公司的QuickTime等. AVI AVI 是 Audio Video I