String.prototype.isNullOrWhiteSpace = function () {
/// <summary>
/// 变量是undefined或者null或者空字符串 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
/// </summary>
/// <returns type="Boolean" />
if (this.trim() == "") {
return true;
}
else if (this == null) {
return true;
}
else {
return false;
}
}
String.prototype.trim = function () {
/// <summary>
/// 去除左右所有空格
/// </summary>
/// <returns type="String" />
return this.replace(/(^\s*)|(\s*$)/g, "");
}
String.prototype.ltrim = function () {
/// <summary>
/// 去除左所有空格 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
/// </summary>
/// <returns type="String" />
return this.replace(/(^\s*)/g, "");
}
String.prototype.rtrim = function () {
/// <summary>
/// 去除右所有空格
/// </summary>
/// <returns type="String" />
return this.replace(/(\s*$)/g, "");
}
String.prototype.isNumber = function () {
/// <summary>
/// 是否是数字
/// </summary>
/// <returns type="Boolean" />
return this != "" && !isNaN(this);
}
Number.prototype.isNumber = function () {
/// <summary>
/// 是否是数字 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
/// </summary>
/// <returns type="Boolean" />
return this.toString().isNumber();
}
String.prototype.toFix = function (fix, isComplement) {
/// <summary>
/// 去掉多余小数并且不四舍五入
/// </summary>
/// <param name="fix" type="int">
/// 要保留的小数位数 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
/// </param>
/// <param name="isComplement" type="string">
/// 是否补位 true false
/// </param>
/// <returns type="Number" />
if (this.isNumber() && fix.isNumber()) {
var array = this.split('.');
if (array.length > 1 && fix.toString().split('.').length == 1) {
if (fix <= 0) {
return Number(array[0]);
}
if (isComplement == "true") {
while (array[1].length < fix) {
array[1] += "0";
}
return array[0] + "." + array[1].substring(0, fix);
}
return Number(array[0] + "." + array[1].substring(0, fix));
}
else {
if (isComplement == "true") {
var point = "";
while (point.length < fix) {
point += "0";
}
return this.toString() + "." + point;
}
}
}
return Number(this);
}
Number.prototype.toFix = function (fix, isComplement) {
/// <summary>
/// 去掉多余小数并且不四舍五入
/// </summary>
/// <param name="fix" type="int">
/// 要保留的小数位数
/// </param>
/// <param name="isComplement" type="string">
/// 是否补位 true false
/// </param>
/// <returns type="Number" />
return this.toString().toFix(fix.toString(), isComplement);
} Number.prototype.fAdd = function (arg2) {
/// <summary>
/// 浮点加法运算(解决JS浮点运算的bug)
/// </summary>
/// <param name="arg2" type="int">
/// 右表达式 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
/// </param>
/// <returns type="Number" />
var arg1 = this.toString();
var r1, r2, m;
try {
r1 = arg1.toString().split(".")[1].length
} catch (e) { r1 = 0 }
try {
r2 = arg2.toString().split(".")[1].length
} catch (e) { r2 = 0 }
m = Math.pow(10, Math.max(r1, r2));
return Number((arg1 * m + arg2 * m) / m);
}
Number.prototype.fSub = function (arg2) {
/// <summary>
/// 浮点减法运算(解决JS浮点运算的bug)
/// </summary>
/// <param name="arg2" type="int">
/// 右表达式
/// </param>
/// <returns type="Number" />
var arg1 = this.toString();
var r1, r2, m, n;
try {
r1 = arg1.toString().split(".")[1].length
} catch (e) { r1 = 0 }
try {
r2 = arg2.toString().split(".")[1].length
} catch (e) { r2 = 0 }
m = Math.pow(10, Math.max(r1, r2));
//动态控制精度长度 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
n = (r1 >= r2) ? r1 : r2;
return Number(((arg1 * m - arg2 * m) / m).toFixed(n));
}
Number.prototype.fMul = function (arg2) {
/// <summary>
/// 浮点乘法运算(解决JS浮点运算的bug)
/// </summary>
/// <param name="arg2" type="int">
/// 右表达式
/// </param>
/// <returns type="Number" />
var arg1 = this;
var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
try {
m += s1.split(".")[1].length
} catch (e) { }
try {
m += s2.split(".")[1].length
} catch (e) { }
return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
}
Number.prototype.fDiv = function (arg2) {
/// <summary>
/// 浮点除法运算(解决JS浮点运算的bug)
/// </summary>
/// <param name="arg2" type="int">
/// 右表达式
/// </param>
/// <returns type="Number" />
var arg1 = this;
var t1 = 0, t2 = 0, r1, r2;
try {
t1 = arg1.toString().split(".")[1].length
} catch (e) { }
try {
t2 = arg2.toString().split(".")[1].length
} catch (e) { }
with (Math) {
r1 = Number(arg1.toString().replace(".", ""));
r2 = Number(arg2.toString().replace(".", ""));
return Number((r1 / r2) * pow(10, t2 - t1));
}
} function strToJson(str) {
/// <summary>
/// 字符串转json
/// </summary>
/// <param name="str" type="String">
/// 要转换的字符串 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
/// </param>
/// <returns type="Object" />
var json = (new Function("return " + str))();
return json;
}
String.prototype.toJson = function (formatStr) {
/// <summary>
/// 字符串转json
/// </summary>
/// <returns type="Object" />
return (new Function("return " + this))();
}
Array.prototype.toJson = function () {
var o = this;
var r = [];
if (typeof o == "string") return "\"" + o.replace(/([\'\"\\])/g, "\\$1").replace(/(\n)/g, "\\n").replace(/(\r)/g, "\\r").replace(/(\t)/g, "\\t") + "\"";
if (typeof o == "object") {
if (!o.sort) {
for (var i in o)
r.push(i + ":" + o[i].toJson());
if (!!document.all && !/^\n?function\s*toString\(\)\s*\{\n?\s*\[native code\]\n?\s*\}\n?\s*$/.test(o.toString)) {
r.push("toString:" + o.toString.toString());
}
r = "{" + r.join() + "}";
} else {
for (var i = 0; i < o.length; i++) {
r.push(o[i].toJson());
}
r = "[" + r.join() + "]";
}
return r;
}
return o.toString();
} function jsonDateFormat(jsonDate) {
/// <summary>
/// json日期格式转换为正常格式
/// </summary>
/// <param name="jsonDate" type="String">
/// json日期
/// </param>
/// <returns type="String" />
try {//出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
var date = new Date(parseInt(jsonDate.replace("/Date(", "").replace(")/", ""), 10));
var month = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
var day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
var hours = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();
var milliseconds = date.getMilliseconds();
milliseconds = myPow(10, (3 - milliseconds.toString().length)).toString().substr(1) + milliseconds.toString();
return date.getFullYear() + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds + "." + milliseconds;
} catch (ex) {//出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
return "";
} /*
快速幂计算,传统计算方式如果幂次是100就要循环100遍求值
快速幂计算只需要循环7次即可
求x的y次方 x^y可以做如下分解
把y转换为2进制,设第n位的值为i,计算第n位的权为x^(2^(n-1)*i)
例如2^12
12的二进制是1100
12=2^3*1+2^2*1+2^1*0+2^0*0
因此2^12=2^(2^3+2^2)
分解得到2^12=2^(2^3)*2^(2^2)
*/
function myPow(dx, dy) {
var r = 1;
while (dy != 0) {
var b = dy & 1; //取最末尾的一位数,也可以判断奇偶数,奇数:1,偶数:0
if (b) {//如果最末尾的数是1,储存有效值
r *= dx;
}
dx *= dx; //这里即完成了x^(2^(n-1)*i)的计算
dy >>= 1; //右位移去掉末尾1位,也可以看成是除以2取整数
}
return r;
}
} String.prototype.toPriceString = function () {
var arr = this.split('.');
var left = arr[0];
var right = "00";
if (arr.length > 1) {
right = arr[1];
var rightL = right.length;
if (rightL < 2) {
right += "0";
}
else if (rightL > 2) {
right = right.substring(0, 2);
}
} var res = new Array();
while (left.length > 3) {
res[res.length] = left.substr(-3);
left = left.substring(0, left.length - 3);
}
res[res.length] = left;
return res.reverse().join(',');
};
Number.prototype.toPriceString = function () {
return this.toString().toPriceString();
}; String.prototype.toUsuDate = function (formatStr) {
/// <summary>
/// json日期格式转换为正常格式
/// </summary>
/// <param name="formatStr" type="String">
/// 格式化字符串格式 yyyy-mm-dd hh:mm:ss.fff 可以从尾部开始省略格式,不能截断或者从头开始省略
/// 可以是yy-m-d 或者yy-mm-d等等 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
/// </param>
/// <returns type="String" />
if (formatStr == undefined || formatStr == null || formatStr == "") {
return jsonDateFormat(this);
}
var formatArr = formatStr.split(/[-\s:\.]/g);
var dateArr = jsonDateFormat(this).split(/[-\s:\.]/g);
var resultData = [];
if (formatArr.length > 7 || dateArr < 2) {
return "0000-00-00";
}
for (var i = 0, j = formatArr.length; i < j; i++) {
switch (i) {
case 0:
var len = formatArr[i].length;
dateArr[i] = dateArr[i].substr(-len);
resultData[i] = dateArr[i];
break;
case 1:
if (dateArr[i] < 10) {
var len = formatArr[i].length;
dateArr[i] = dateArr[i].substr(-len);
}
resultData[i] = "-" + dateArr[i];
break;
case 2:
if (dateArr[i] < 10) {
var len = formatArr[i].length;
dateArr[i] = dateArr[i].substr(-len);
}
resultData[i] = "-" + dateArr[i];
break;
case 3:
if (dateArr[i] < 10) {
var len = formatArr[i].length;
dateArr[i] = dateArr[i].substr(-len);
}
resultData[i] = " " + dateArr[i];
break;
case 4:
if (dateArr[i] < 10) {
var len = formatArr[i].length;
dateArr[i] = dateArr[i].substr(-len);
}
resultData[i] = ":" + dateArr[i];
break;
case 5:
if (dateArr[i] < 10) {
var len = formatArr[i].length;
dateArr[i] = dateArr[i].substr(-len);
}
resultData[i] = ":" + dateArr[i];
break;
case 6:
var len = formatArr[i].length;
resultData[i] = "." + dateArr[i].substr(-len);
break;
default:
}
}
return resultData.join('');
} function GetRequest() {
/// <summary>
/// 获取url中"?"符后的字串
/// 使用方法:
/// var Request = new Object();
/// Request = GetRequest();
/// var 参数1, 参数2, 参数3, 参数N;
/// 参数1 = Request['参数1'];
/// 参数2 = Request['参数2'];
/// 参数3 = Request['参数3'];
/// 参数N = Request['参数N'];
/// </summary>
/// <returns type="String" />
var url = location.search;
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for (var i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
}
}
return theRequest;
}
var Request = (function () {
/// <summary>
/// 获取url中"?"符后的字串
/// 使用方法:
/// 参数1 = Request['参数1'];
/// 参数2 = Request['参数2'];
/// 参数3 = Request['参数3'];
/// 参数N = Request['参数N'];
/// </summary>
/// <returns type="String" />
var url = location.search;
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for (var i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
}
}
return theRequest;
})(); function isNullObj(obj) {
/// <summary>
/// 对象是否有值
/// </summary>
/// <param name="obj" type="Object">
/// 对象obj 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
/// </param>
/// <returns type="Boolean" />
for (var i in obj) {
return false;
}
return true;
}
//Object.prototype.hasValue = function () {//Object的原型链增加方法会影响到jq和ztree
// /// <summary>
// /// 对象是否有值
// /// </summary>
// /// <param name="obj" type="Object">
// /// 对象obj
// /// </param>
// /// <returns type="Boolean" />
// for (var i in this) {
// return false;
// }
// return true;
//} Serialize = function (obj) {
/// <summary>
/// 对象序列化
/// </summary>
/// <param name="obj" type="Object">
/// 任意数据类型
/// </param>
/// <returns type="String" />
function __typeof__(objClass) {
if (objClass && objClass.constructor) {
var strFun = objClass.constructor.toString();
var className = strFun.substr(0, strFun.indexOf('('));
className = className.replace('function', '');
return className.replace(/(^\s*)|(\s*$)/ig, '');
}
return typeof (objClass);
};
var type = __typeof__(obj);
switch (type) {
case 'Array':
{
var strArray = '[';
for (var i = 0 ; i < obj.length ; ++i) {
var value = '';
if (obj[i]) {
value = Serialize(obj[i]);
}
strArray += value + ',';
}
if (strArray.charAt(strArray.length - 1) == ',') {
strArray = strArray.substr(0, strArray.length - 1);
}
strArray += ']';
return strArray;
}
case 'Date':
{
return 'new Date(' + obj.getTime() + ')';
}
case 'Function': {
return obj;
}
case 'Number':
case 'number':
case 'Boolean':
case 'String':
{
return "'" + obj.toString() + "'";
}
default:
{
var serialize = '{';
for (var key in obj) {
if (key == 'Serialize') continue;
var subserialize = 'null';
if(obj.hasOwnProperty(key)){
if (obj[key] != undefined) {
subserialize = Serialize(obj[key]);
}
serialize += '\r\n' + key + ' : ' + subserialize + ',';
}
}
if (serialize.charAt(serialize.length - 1) == ',') {
serialize = serialize.substr(0, serialize.length - 1);
}
serialize += '\r\n}';
return serialize;
}
}
}; //sandbox
(function () {
var method;
var noop = function () { };
var methods = [
'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
'timeStamp', 'trace', 'warn'
];
var length = methods.length;
var console = (window.console = window.console || {});
while (length--) {
method = methods[length];
// Only stub undefined methods.
if (!console[method]) {
console[method] = noop;
}
}
}()); var sandbox = new _sandbox();
/* sandbox.console.log("123"); //输出log
sandbox.console.close(); //关闭沙箱控制台 sandbox.exec(function () { console.log("333"); });//执行一个代码块
sandbox.exec.close(); //关闭沙箱方法执行块 sandbox.close(); //关闭整个沙箱
*/
function _sandbox() {
/// <summary>
/// 沙箱模式 出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
/// </summary> window.sandboxConfig = {
stop_exec: false
};
};
_sandbox.prototype.close = function () {
this.console.close();
this.exec.close();
};
_sandbox.prototype.console = (function () {
return window.console;
}());
_sandbox.prototype.console.close = function () {
var noop = function () { };
var methods = [
'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
'timeStamp', 'trace', 'warn'
];
var length = methods.length;
var console = (window.console = window.console || {});
while (length--) {
method = methods[length];
console[method] = noop;
}
};
_sandbox.prototype.exec = function (func) {
if (!window.sandboxConfig.stop_exec) {
if (typeof (func) == "function") {
func();
}
} //出自http://www.cnblogs.com/ahjesus 尊重作者辛苦劳动成果,转载请注明出处,谢谢!
return this;
};
_sandbox.prototype.exec.close = function () {
window.sandboxConfig.stop_exec = true;
}; function clone(jsonObj) {
var buf;
if (jsonObj instanceof Array) {
buf = [];
var i = jsonObj.length;
while (i--) {
buf[i] = arguments.callee(jsonObj[i]);
}
return buf;
} else if (typeof jsonObj == "function") {
return jsonObj;
} else if (jsonObj instanceof Object) {
buf = {};
for (var k in jsonObj) {
buf[k] = arguments.callee(jsonObj[k]);
}
return buf;
} else {
return jsonObj;
}
}

ahjesus不断完善的js小"内裤"的更多相关文章

  1. 一个js小游戏----总结

    花了大概一天左右的功夫实现了一个js小游戏的基本功能,类似于“雷电”那样的小游戏,实现了随即怪物发生器,碰撞检测,运动等等都实现了,下一个功能是子弹轨迹,还有其他一些扩展功能,没有用库,也没有用web ...

  2. React.js 小书 Lesson16 - 实战分析:评论功能(三)

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson16 转载请注明出处,保留原文链接和作者信息. 接下来的代码比较顺理成章了.修改 Commen ...

  3. React.js 小书 Lesson15 - 实战分析:评论功能(二)

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson15 转载请注明出处,保留原文链接和作者信息. 上一节我们构建了基本的代码框架,现在开始完善其 ...

  4. js小功能整理

    /** * 判断是否包含字符串某字符串 * @param {[type]} str [被检测的字符串] * @param {[type]} substr [检测是否含有的字符串] * @return ...

  5. [转载]Js小技巧||给input type=“password”的输入框赋默认值

    http://www.cnblogs.com/Raywang80s/archive/2012/12/06/2804459.html [转载]Js小技巧||给input type="passw ...

  6. 一些js小题(一)

    一些js小题,掌握这些对于一些常见的面试.笔试题应该很有帮助: var a=10; function aa(){ alert(a); } function bb(){ aa(); } bb();//1 ...

  7. 第24篇 js小知识和“坑”

    前面说了说了js的相关知识,基本上除了语法外,把项目常用的知识做了一个梳理,现在说下js的其它方面的知识,这些知识不成体系,属于不理解对于一般开发没什么太多影响,但如果理解清楚,可以更好去开发. js ...

  8. React.js 小书介绍

    React.js 小书 Github 关于作者 这是一本关于 React.js 的小书. 因为工作中一直在使用 React.js,也一直以来想总结一下自己关于 React.js 的一些知识.经验.于是 ...

  9. React.js小书总结

    (迁移自旧博客2017 08 27) 第一阶段 react的组件相当于MVC里面的View. react.js 将帮助我们将界面分成了各个独立的小块,每一个块就是组件,这些组件之间可以组合.嵌套,就成 ...

随机推荐

  1. js日期时间比较函数

    转自:http://www.cnblogs.com/zxjyuan/archive/2010/09/07/1820708.html js日期比较(yyyy-mm-dd) function duibi( ...

  2. Git回滚远程版本

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “房子是租的 但生活不是” 1.故事的开始 远程master分支下代码被不小心提交了很多垃圾代码 ...

  3. spring中bean配置和bean注入

    1 bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean ...

  4. POJ 2083 Fractal

    Fractal Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 6646   Accepted: 3297 Descripti ...

  5. SQL Server 2008 Windows身份验证改为混合模式身份验证

    1.在当前服务器右键进入“属性页”->“安全性”->勾选Sql Server和Windows身份验证模式->确定. 由于默认不启用sa,所以如果启用sa账户登录,则还需要如下设置: ...

  6. vbox导入虚拟电脑网卡MAC问题

    vbox导入虚拟电脑之后,需要"重新初始化所有网卡的MAC地址". centos需要做以下几步操作: 1.删除文件"/etc/udev/rules.d/70-persis ...

  7. ionic 实现自动升级APP

    最近做移动商城开发,需要一个自动升级APP的功能,在网上搜罗很多,发现有的是下载APK,有的在我这服务无法实现,由于时间原因,都被PASS了,最后找到了一个热更新插件,经过半天的调试,可以使用,很欣喜 ...

  8. 使用Html5+C#+微信 开发移动端游戏详细教程:(六)游戏界面布局与性能优化

    本篇教程我们主要讲解在游戏界面上的布局一般遵循哪些原则和一些性能优化的通用方法. 接着教程(五),我们通过Loading类一次性加载了全部图像素材,现在要把我们所用到的素材变成图片对象显示在界面上,由 ...

  9. cJSON_json包的C语言解析库

    cJSON库描述 CJSON是一个用于解析JSON包的C语言库,库文件为cJSON.c和cJSON.h, 所有的实现都在这两个文件中.原作者的地址cJSON. JSON包的解析 例如有一个JSON的数 ...

  10. [git]git add 增加文件,文件名乱码

    使用git add添加要提交的文件的时候,如果文件名是中文,会显示形如 274\232\350\256\256\346\200\273\347\273\223.png 的乱码. 解决方案: 在bash ...