`
JavaSam
  • 浏览: 951755 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

javascript工具类(持续更新……)

 
阅读更多
/**
 * @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);

 

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics