ahjesus不断完善的js小"内裤"
- 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小"内裤"的更多相关文章
- 一个js小游戏----总结
花了大概一天左右的功夫实现了一个js小游戏的基本功能,类似于“雷电”那样的小游戏,实现了随即怪物发生器,碰撞检测,运动等等都实现了,下一个功能是子弹轨迹,还有其他一些扩展功能,没有用库,也没有用web ...
- React.js 小书 Lesson16 - 实战分析:评论功能(三)
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson16 转载请注明出处,保留原文链接和作者信息. 接下来的代码比较顺理成章了.修改 Commen ...
- React.js 小书 Lesson15 - 实战分析:评论功能(二)
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson15 转载请注明出处,保留原文链接和作者信息. 上一节我们构建了基本的代码框架,现在开始完善其 ...
- js小功能整理
/** * 判断是否包含字符串某字符串 * @param {[type]} str [被检测的字符串] * @param {[type]} substr [检测是否含有的字符串] * @return ...
- [转载]Js小技巧||给input type=“password”的输入框赋默认值
http://www.cnblogs.com/Raywang80s/archive/2012/12/06/2804459.html [转载]Js小技巧||给input type="passw ...
- 一些js小题(一)
一些js小题,掌握这些对于一些常见的面试.笔试题应该很有帮助: var a=10; function aa(){ alert(a); } function bb(){ aa(); } bb();//1 ...
- 第24篇 js小知识和“坑”
前面说了说了js的相关知识,基本上除了语法外,把项目常用的知识做了一个梳理,现在说下js的其它方面的知识,这些知识不成体系,属于不理解对于一般开发没什么太多影响,但如果理解清楚,可以更好去开发. js ...
- React.js 小书介绍
React.js 小书 Github 关于作者 这是一本关于 React.js 的小书. 因为工作中一直在使用 React.js,也一直以来想总结一下自己关于 React.js 的一些知识.经验.于是 ...
- React.js小书总结
(迁移自旧博客2017 08 27) 第一阶段 react的组件相当于MVC里面的View. react.js 将帮助我们将界面分成了各个独立的小块,每一个块就是组件,这些组件之间可以组合.嵌套,就成 ...
随机推荐
- 何为.Net Remoting【转】
借助基维百科给它的定义如下: NET Remoting 是微软 .NET Framework 中的一种网络通讯技术,与 XML Web Service 不同的是,它可以使用 SOAP 以外的协定来通讯 ...
- Factorization Machine
Factorization Machine Model 如果仅考虑两个样本间的交互, 则factorization machine的公式为: $\hat{y}(\mathbf{x}):=w_0 + \ ...
- Android 使用NDK编译sipdroid Library
sipdroid是一款开源的运行于Android平台上的voip,目前支持音频和视频通话: 项目拖管地址:http://code.google.com/p/sipdroid/ 下载源代码,导入ecli ...
- 简单Bat文件编写
@ECHO OFFTITLE 清理Work目录E:cd E:\Android_WorkSpace@ECHO ONecho 开始打包MavenTest......mvn install pause @E ...
- Nginx+Keepalived实现站点高可用
http://seanlook.com/2015/05/18/nginx-keepalived-ha/ http://blog.csdn.net/conquer0715/article/details ...
- Material Design UI Widgets
Android L 开发者预览支持库提供两个新的Widgets,RecyclerView和CardView.使用这两个Widgets可以显示复杂的Listview和卡片布局,这两个Widgets默认使 ...
- JS事件委托的原理和应用
js事件委托也叫事件代理,实际上事件委托就是通过事件冒泡实现的,所谓的事件就是onclick,onmouseover,ondown等等,那么委托呢?委托就是指本来这个事是要你自己做的,但是你却让别人帮 ...
- 关于Windows Phone平台音乐播放的的技术调研
希望看到这篇文章的开发者能提供你们的想法,让我们一起来探讨一款wp平台上面一款能流畅播放.能流畅拖拽进入条.只发一次请求就可以缓存的最好的播放器.希望大家能对我下面遇到的问题作出回答. 现在出了Win ...
- FAQ: Machine Learning: What and How
What: 就是将统计学算法作为理论,计算机作为工具,解决问题.statistic Algorithm. How: 如何成为菜鸟一枚? http://www.quora.com/How-can-a-b ...
- 受限玻尔兹曼机(RBM)学习笔记(五)梯度计算公式
去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算 ...