/**
* 适合本项目的工具箱
*
* @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;
});
|