function dateGetter(name, size, offset, trim) { offset = offset || 0; return function (date) { var value = date['get' + name](); if (offset > 0 || value > -offset) value += offset; if (value === 0 && offset == -12) value = 12; return padNumber(value, size, trim); }; }; function padNumber(num, digits, trim) { var neg = ''; if (num < 0) { neg = '-'; num = -num; } num = '' + num; while (num.length < digits) num = '0' + num; if (trim) num = num.substr(num.length - digits); return neg + num; }; function dateStrGetter(name, shortForm) { return function(date, formats) { var value = date['get' + name](); var get = (shortForm ? ('SHORT' + name) : name).toUpperCase(); return formats[get][value]; }; }; window.IGrow = {}; var Utilities = { getParameterByName: function (name) { name = name.replace(/[[]/, "\[").replace(/[]]/, "\]"); var regex = new RegExp("[\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); return results === null ? "" : decodeURIComponent(results[1].replace(/+/g, " ")); }, findElement: function (arr, propName, propValue) { for (var i = 0; i < arr.length; i++) if (arr[i][propName] == propValue) return arr[i]; }, findWithAttr: function (array, attr, value) { for (var i = 0; i < array.length; i += 1) { if (array[i][attr] === value) { return i; } } }, jsonObjToBase64: function (json) { return btoa(encodeURIComponent(JSON.stringify(json))); }, base64TojsonObj: function (base64) { return JSON.parse(decodeURIComponent(atob(base64))); }, pageJump: function (url) { location.href = url; }, log: function () { for(key in arguments){ console.log(JSON.parse(JSON.stringify(arguments[key]))); } }, copy: function (source) { var result = source instanceof Array ? [] : {}; for (var key in source) { result[key] = typeof source[key] === 'object' ? this.copy(source[key]) : source[key]; } return result; }, params: function () { var url = window.location.search; if (url.indexOf("?") != -1) { var str = url.substr(1), strs = str.split("&"), key = new Array(strs.length), value = new Array(strs.length), params = {}; for (var i = 0; i < strs.length; i++) { key[i] = strs[i].split("=")[0] value[i] = unescape(strs[i].split("=")[1]); params[key[i]] = value[i] } return params; } }, getTime: function (date, format) { var text = '', parts = [], fn, match; while (format) { match = /((?:[^yMdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/.exec(format); if (match) { parts = parts.concat([].slice.call(match, 1)); format = parts.pop(); } else { parts.push(format); format = null; } } parts.forEach(function(value) { fn = DATE_FORMATS[value]; text += fn ? fn(new Date(date)) : value.replace(/(^'|'$)/g, '').replace(/''/g, "'"); }); return text; }, tip: function (msg,time) { var html = '<div class="weui_dialog_alert" id="tip">' + '<div class="weui_mask"></div>' + '<div class="weui_dialog">' + '<div class="weui_dialog_hd"><strong class="weui_dialog_title">提示</strong></div>' + '<div class="weui_dialog_bd">' + msg + '</div>' + '<div class="weui_dialog_ft">', time = time || 2000; if ($('#tip').length) { $('#tip').find('.weui_dialog_bd').html(msg); $('#tip').show(); } else { $('body').append(html); } $('#tip').off().click(function(){ $(this).hide(); }); setTimeout(function () { $('#tip').hide(); }, time); }, extend: function () { var _extend, _isObject, arr = arguments, result = {}, i; _isObject = function (o) { return Object.prototype.toString.call(o) === '[object Object]'; }; _extend = function self(destination, source) { var property; for (property in destination) { if (destination.hasOwnProperty(property)) { // 若destination[property]和sourc[property]都是对象,则递归 if (_isObject(destination[property]) && _isObject(source[property])) { self(destination[property], source[property]); } ; // 若sourc[property]已存在,则跳过 if (source.hasOwnProperty(property)) { continue; } else { source[property] = destination[property]; } } } }; if (!arr.length) return {}; for (i = arr.length - 1; i >= 0; i--) { if (_isObject(arr[i])) { _extend(arr[i], result); } } arr[0] = result; return result; },
forEach: function (obj, iterator, context) {
var key, length;
if (obj) {
if (typeof obj == 'function') {
for (key in obj) {
// Need to check if hasOwnProperty exists,
// as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function
if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {
iterator.call(context, obj[key], key, obj);
}
}
} else if ($.isArray(obj)) {
var isPrimitive = typeof obj !== 'object';
for (key = 0, length = obj.length; key < length; key++) {
if (isPrimitive || key in obj) {
iterator.call(context, obj[key], key, obj);
}
}
} else if (obj.forEach && obj.forEach !== Utilities.forEach) {
obj.forEach(iterator, context, obj);
} else {
for (key in obj) {
if (obj.hasOwnProperty(key)) {
iterator.call(context, obj[key], key, obj);
}
}
}
}
return obj;
}
}; Utilities.routeParams = Utilities.params();
常用js方法,extend合并对象,copy深拷贝对象,tip提示信息框,getTime返回自定义格式时间,params获取浏览器地址参数,log打印相关变量,forEach循环对象或数组