all files / dui/src/core/ tool.js

68.57% Statements 24/35
57.14% Branches 8/14
90% Functions 9/10
68.57% Lines 24/35
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87                                                    14× 14× 14×                 25× 25× 744× 744× 744×   25× 25×                                                        
/**
 * 适合本项目的工具箱
 *
 * @file 常用工具集,这里放的工具不但适用于本项目,还能在其他项目中使用
 * @author Brian Li(lbxxlht@163.com)
 */
var define = typeof define === 'function' && define.amd ? define : function (factory) {
    typeof module === 'object' ? (module.exports = factory(require)) : '';
};
 
define(function (require) {
 
    var obj = {};
 
    /**
     * 绑定函数上下文
     *
     * @param {Function} func 需要绑定的函数
     * @param {Object} me 绑定到函数的上下文
     * @return {Function} 通过闭包形式返回上下文绑定好的函数。
     */
    obj.bind = function (func, me) {
        return function () {
            return func.apply(me, arguments);
        };
    };
 
    /**
     * 类的继承
     *
     * @param {Object} childClass 子类
     * @param {Object} superClass 基类
     */
    obj.inherit = function (childClass, superClass) {
        function F() {}
        F.prototype = superClass.prototype;
        childClass.prototype = new F();
        childClass.prototype.constructor = childClass;
    };
 
    /**
     * uuid生成器
     *
     * @param {string} tpl uuid的模版串,xy将被替换,其他不替换
     * @return {string} 符合格式的唯一id
     */
    obj.uuid = function (tpl) {
        var reg = /[xy]/g;
        var replacer = function (c) {
            var r = Math.random() * 16 | 0;
            var v = c === 'x' ? r : (r & 3 | 8);
            return v.toString(16);
        };
        tpl = typeof tpl === 'string' ? tpl : 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
        return tpl.replace(reg, replacer).toUpperCase();
    };
 
 
    /**
     * 获取DOM节点dataset,shit IE9
     *
     * @param {HtmlElement} dom dom节点
     * @return {Object} dataset数据集
     */
    obj.getDataset = function (dom) {
        Eif (typeof dom.dataset !== 'undefined') {
            return dom.dataset;
        }
        var attrs = dom.attributes;
        var dataset = {};
        for (var i = 0; i < attrs.length; i++) {
            var item = attrs[i];
            var key = item.name;
            if (key.indexOf('data-') !== 0) {
                continue;
            }
            key = key.slice(5, key.length).replace(/\-(\w)/g, function (all, letter) {
                return letter.toUpperCase();
            });
            dataset[key] = item.value;     
        }
        return dataset;
    };
 
    return obj;
});