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. apache 配置反向代理服务器

    前几天实验了下 nginx 配置反向代理服务器.虽然 nginx 的安装很麻烦,但是用起来倒是很简单.不过组里没人用过 nginx,apache 服务器大家倒是蛮熟,为了减少 ops team 的工作 ...

  2. 解决play-1.4.0在linux或mac下提示No such file or directory的问题

    问题原因:"play"脚本中有特殊符号. 解决方案:写脚本去掉即可. 代码:fixplay.py 放在play-1.4.0目录下执行.亲测在osx与ubuntu下均可用. with ...

  3. swift 附属脚本

    附属脚本是访问对象,集合或序列的快捷方式 struct STest{ let constValue:Int subscript(count:Int)->Int{ return count*con ...

  4. vs2010 rdlc .net4.0 卸载 Appdomain 时出错。 (异常来自 HRESULT:0x80131015) 解决办法

    网上一看Appdomain出错,绝大部分都是说控件加载错误.经测试在.net 4.0环境下 rdlc报表很容易发生卸载 Appdomain 时出错. (异常来自 HRESULT:0x80131015) ...

  5. PostgreSQL表空间、模式、表、用户/角色之间的关系

    PostgreSQL表空间.模式.表.用户/角色之间的关系是本文我们主要要介绍的内容,表空间,数据库,模式,表,用户,角色之间的关系到底是怎样的呢?接下来我们就开始介绍这一过程. 实验出角色与用户的关 ...

  6. node.js 的 os 模块

    Node.js的os module 提供了一系列跟操作系统相关的操作函数,比较简单,所以功能也就十分有限.我们可以去官网看各个函数的介绍: http://nodejs.org/api/os.html ...

  7. ASP.NET 网站支持多语言

    ASP.NET网站支持多语言 (本地资源文件和全局资源文件的调用及需注意的地方总结)   一.   本地资源文件(App_LocalResources): ①.     本地资源的生成及调用 1.本地 ...

  8. SNF开发平台WinForm之三-开发-单表选择控件创建-SNF快速开发平台3.3-Spring.Net.Framework

    3.1运行效果: 3.2开发实现: 3.2.1 这个开发与第一个开发操作步骤是一致的,不同之处就是在生成完代码之后,留下如下圈红程序,其它删除. 第一个开发地址:开发-单表表格编辑管理页面 http: ...

  9. Vectoroid

    Use cases Drawing (sketch, illustrations, cartooning, etc). Diagramming (any sort of chart with obje ...

  10. 正确理解静态Static关键字

    与其他语言不通,C#没有全局变量和全局函数的感念,C#的所有字段和方法都出现在一个类的上下文中,在C#中与全局字段或函数等价的就是静态字段或方法.“全局字段或方法”与“C#的静态字段或方法”没有功能上 ...