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. 调用 webapi的put和delete 报"Method Not Allowed" 405 错误。

    修改引用到webapi的Dll文件对应的项目的web.config 选择生成读写方法webapi会生成四个读写的方法(CRUD),两个获取数据的.一个更新.一个删除,默认情况下更新和删除是不对外开外的 ...

  2. 专访Linux嵌入式开发韦东山操作系统图书作者--转

    CSDN学院讲师韦东山:悦己之作,方能悦人 发表于2015-04-28 08:09| 6669次阅读| 来源CSDN| 24 条评论| 作者夏梦竹 专访Linux嵌入式开发韦东山操作系统图书作者 摘要 ...

  3. List的遍历和删除元素

    package test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public c ...

  4. 为Ubuntu笔记本电脑设置WiFi热点共享上网

    该文由土木坛子转译而来,说是转译,其实看截图就可以方便的设置,没有任何命令,全是图形界面,方便容易.我们都知道怎样在 windows 7 系统上如何设计 Wifi 热点,当你只有一条网线,多台计算机的 ...

  5. 比特(bit)与字节(byte)区别,站位比较

    “字节”(Byte) “比特”(Bit) 当你进行网络下载的时候它们会经常出现,同时你获取的速度指示也都以比特/每秒或者字节/每秒来显示. 现在就来弄清楚比特(Bit).字节(Byte)和千字节(Kb ...

  6. css3,background-clip/background-origin的使用场景,通俗讲解

    先不说background-clip/background-origin的用法,我们先来聊聊css背景方面的知识. <!DOCTYPE html> <html lang=" ...

  7. Web程序员开发App系列 - 认识HBuilder

    Web程序员开发App系列 Web程序员开发App系列 - 认识HBuilder Web程序员开发App系列 - 申请苹果开发者账号 Web程序员开发App系列 - 调试Android和iOS手机代码 ...

  8. ubuntu启动器和dash里应用图标不正常

    在以下目录: /usr/share/applications~/.local/share/applications 添加或编辑(pycharm图标不正常):jetbrains-pycharm.desk ...

  9. nodejs中常用加密算法

    在常用的nodejs+express工程中,为了安全在登录及表单传输时,应该都需进行加密传输,目前个人常用到的加密方式有下列几种: 1.Hash算法加密: 创建一个nodejs文件hash.js,输入 ...

  10. 如何自学Android--转

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51217319 1. Java知识储备 本知识点不做重点讲解: 对于有基础的同学推荐看<J ...