/** * @author wsf javascript工具类 */ ; (function (win){ /** * js工具类 */ function jsUtils (){ //TODO 可以初始化一些必要的信息 } /** * utils 原型对象 */ jsUtils.prototype = { constructor:jsUtils, //判断对象类型 _is:function (type,val){ return Object.prototype.toString.call(val) == '[object '+type+']'; }, //是否是数组 isArray:function (val){ return this._is("Array", val); }, //是否是arguments对象 isArgs:function (val){ return this._is("Arguments", val); }, //是否是函数 isFunction:function (val){ return this._is("Function", val); }, //是否是正则表达式 isRegExp:function (val){ return this._is("RegExp", val); }, //是否是本地JSON对象 isJSON:function (val){ return window.JSON&&this._is("JSON", val); }, //是否是undefined isUndefined:function (val){ return typeof val == "undefined"; }, //是否是空 isNull:function (val){ return val == null; }, //判断是否为空或nul isBlank:function (val){ if(this.isNull(val)||this.isUndefined(val)) return true; var _v = val.trim ? val.trim():val.replace(/^(\s*)|(\s*$)/g,""); return _v.length==0; }, //null或空字符窜或undefined isEmpty:function (val){ return this.isBlank(val); }, //函数柯里化 curry:function (fn){ var args = Array.prototype.slice.call(arguements,1); return function (){ var inArgs = Array.prototype.slice.call(arguements); var finalArgs = args.concat(inArgs); return fn.apply(null,finalArgs); } }, //绑定事件 bind:function (fn,context){ var args = Array.prototype.slice.call(arguements,2); return function (){ var inArgs = Array.prototype.slice.call(arguements); var finalArgs = args.concat(inArgs); return fn.apply(context,finalArgs); } }, //函数节流 throttle:function (method,interval,context){ if(typeof method.tid != "undefined") clearTimeout(method.tid);//清除计时器id method.tid = setTimeout(function (){ method.call(context); },interval); }, //定时器 timer:function (fn,interval,onOrmore){ if(this.isFunction(fn)){ var _f = this.isEmpty(onOrmore);//是否执行多次 if(_f||(!_f&&onOrmore == "one")){ fn.timerid = setTimeout(fn,interval); }else{ //执行多次 fn.timerid = setTimeout(function (){ fn(); setTimeout(arguments.callee,interval); },interval); } }else{ throw new Error("定时器参数有误!"); } }, //获得url参数信息 getUrlQueryParam:function (_url,key){ if (_url.lastIndexOf("?") != -1) { var queryStr = _url.substring(_url.lastIndexOf("?") + 1, _url.length); if(!key) return queryStr;// 返回所有参数 else{ var params = queryStr.split("&"); for(var j = 0 ;j < params.length;j++){ var tmp = params[j].split("="); if(tmp[0]==key){ return tmp[1]; break; } } } } }, //javascript事件工具类 eventUtil:{ //添加事件 addHandler:function (element,type,handler){ if(element.addEventListener){ element.addEventListener(type,handler,false);//ie9+,ff,chrome }else if(element.attachEvent){ element.attachEvent("on"+type,handler);//ie8以下 }else{ element["on"+type] = handler;//其他 } }, //移除事件 removeHandler:function (element,type,handler){ if(element.removeEventListener){ element.removeEventListener(type,handler,false); }else if(element.detachEvent){ element.detachEvent("on"+type,handler); }else{ element["on"+type] = null; } }, //获取event对象 getEvent:function (event){ return event?event:w.event; }, //获取target对象 getTarget:function (event){ return event.target || event.srcElement; }, //阻止冒泡 preventDefault:function (event){ if(event.preventDefault){ event.preventDefault(); }else{ event.returnValue = false; } } }, //js自定义事件 customEvent:{ //创建自定义对象 create:function (){ //event对象 function Event(){ this.handlers={};//事件集合 }; //自定义事件原型对象 Event.prototype={ //构造函数 constructor:Event, //注册事件 addHandler:function (type,handler){ if(typeof this.handlers[type] == "undefined"){ this.handlers[type] = []; } this.handlers[type].push(handler);//注册事件 }, //触发事件 trigger:function (event){ if(!event.target){ event.target = this; } if(this.handlers[event.type] instanceof Array){ var handlers = this.handlers[event.type]; for(var i = 0 ,len = handlers.length;i<len;i++){ handlers[i](event);//调用 } } }, //移除事件 removeHandler:function (type,handler){ if(this.handlers[type] instanceof Array){ var handlers = this.handlers[type]; for(var i = 0,len = handlers.length;i<len;i++){ if(handlesr[i] == handler){ break; } } handlers.splice(i,1);//移除 } } } return new Event();//返回自定义事件对象 } }, //去掉千分号 removeThousandSign:function (num){ if(null != num) return num.replace(/,/g,""); }, //添加千分号 addThousandSign:function (num){ num = num + ""; num = removePerThousandSign(num); num = parseFloat(num).toFixed(2);//四舍五入保留两位小数 if(isNaN(num)) return "0.0"; var flag = num.indexOf(".") > 0;//是否有小数点 var regexStr = /(\d{1,3})(?=(\d{3})+(?:$|\.))/g; var resultStr = num.replace(regexStr, "$1,"); return flag ? resultStr : resultStr+".00"; } } win.jsUtils = jsUtils;//赋给全局对象 })(window);