文档章节

js学习笔记

z
 zxl911400
发布于 2016/12/05 15:12
字数 739
阅读 0
收藏 0

///////////////////////////////////////////
/*global*/
/////////////////////////////////////
//lurk.Dom.append(lurk.Dom.query('head', true) || document.documentElement, 'script').text = res.responseText;
/**
 * 根据方法名获取方法
 */
function getFunction(func)
{
  if(func.isFunction())
    return func;
  return new Function(func + "()");
}
/**
 * 设置方法为不可枚举类型
 * @param objs
 */
hideFunctions = function(objs) {
  var i = 0, p;
  for (; i < objs.length; i++) {
    p = objs[i].prototype;
    for ( var o in p) {
      if (p[o].isFunction()) {
        Object.defineProperty(p, o, {
          enumerable: false
        });
      }
    }
  }
}
// /////////////////////////////////////
/* Date 扩展 */
// ////////////////////////////////////
/**
 * 判断指定值是否是数组
 * 
 * @return 如果是数组,返回true
 * 
 */
Object.prototype.isArray = function() {
  return Array.isArray(this);
}
/**
 * 判断指定值是否是字符串
 * 
 * @return 如果是字符串,返回true
 * 
 */
Object.prototype.isString = function() {
  return typeof this == 'string';
};
/**
 * 判断指定值是否是数字
 * 
 * @return 如果是数字,返回true
 * 
 */
Object.prototype.isNumber = function() {
  return typeof this == 'number';
};
/**
 * 判断指定值是否是函数
 * 
 * @return 如果是函数,返回true
 * 
 */
Object.prototype.isFunction = function() {
  return typeof this == 'function';
};

/**
 * 判断是否是日期
 * @param value
 * @returns {Boolean}
 */
Object.prototype.isDate = function(value)
{
  return typeof this == 'date';
}

/**
 * 
 * @returns
 */
Object.prototype.clone = function()
{
  var me = this, o;
  o = (me.isString() || me.isNumber) && me;
  if(o) return o;
  o = me.isArray() && [];
  o = !o && {};
  for(var k in me){
    (o[k] = me[k]);
  };
  return o;
}
// /////////////////////////////////////
/* Date 扩展 */
// ////////////////////////////////////
Date.prototype.format = function(fmt) {
  var d = this, f = fmt, k;
  var o = {
    "M+": d.getMonth(),
    "d+": d.getDate(),
    "h+": d.getHours(),
    "m+": d.getMinutes(),
    "s+": d.getSeconds(),
    "S": d.getMilliseconds()
  }
  if (/(y+)/.test(f)) {
    f = f.replace(RegExp.$1, d.getFullYear());
  }
  for (k in o) {
    if (new RegExp("(" + k + ")").test(f)) {
      f = f.replace(RegExp.$1, ((k === 'S' ? "000" : '00') + o[k]).substr(("" + o[k]).length));// ms值为三位数
    }
  }
  return f;
}
Date.prototype.formatDate = function() {
  return this.format('y-M-d');
}
Date.prototype.formatDateTime = function() {
  return this.format('y-M-d h:m:s');
}
// ///////////////////////////////////////////////////
/* Number扩展方法 */
// /////////////////////////////////////////////
/**
 * 格式化日期
 * 
 * @param time
 *          Date对象或者毫秒值
 * @param fmt
 *          返回日期格式,Example: 'yyyy-MM-dd hh:mm:ss' or 'y-M-d h:m:s'
 * @return 日期格式的文本,Example: '2016-01-01 19:00:00'
 */
Number.prototype.formatDate = function(fmt) {
  return new Date(this).format(fmt);
}
/**
 * 格式化货币
 * 
 * @return 货币格式的文本,Example: '1,000,000.00'
 */
Number.prototype.formatCurrency = function() {
  var n = this.toFixed(2) + "", r = /(\d)(\d{3}[\.,])/;
  while (r.test(n))
    n = n.replace(r, "$1,$2");
  return n;
}
/**
 * 格式化字节大小
 * 
 * @param size
 *          字节大小
 * @return 格式后文本,Example: '1.03 GB','430 Byte(s)',etc.
 */
Number.prototype.formatByteSize = function() {
  var v = ["Byte(s)", "KB", "MB", "GB"], i = 0, s = this;
  while (s > 1024 && i < 4) {
    s = s / 1024;
    i++;
  }
  return (i ? s.toFixed(2) : s) + " " + v[i];
}
/**
 * 舍弃指定精度后的小数,对保留的末位数字舍入
 * 
 * @parem precision 要保留的小数位数
 * @return 结果值
 */
Number.prototype.roundUp = function(precision) {
  return Math.ceil(this * Math.pow(10, precision)) / Math.pow(10, precision);
}
/**
 * 舍弃指定精度后的小数
 * 
 * @parem precision 要保留的小数位数
 * @return 结果值
 */
Number.prototype.roundDown = function(precision) {
  return Math.floor(this * Math.pow(10, precision)) / Math.pow(10, precision);
}
// ///////////////////////////////////////////////////
/* String扩展方法 */
// /////////////////////////////////////////////
/**
 * 将日期格式的文本解析为时间值 Example:'2016-01-01'
 * 
 * @return 毫秒值
 */
String.prototype.parseDate = function() {
  return new Date(this.replace(/[^0-9/\s+:]/g, '/')).getTime();
}
/**
 * 判断文本是否含指定前缀
 * 
 * @param prefix
 * @return 如果包含指定前缀,返回true
 */
String.prototype.startWith = function(prefix) {
  return this.indexOf(prefix) == 0
}
/**
 * 判断文本是否含指定后缀
 * 
 * @param suffix
 * @return 如果包含指定后缀,返回true
 */
String.prototype.endWith = function(suffix) {
  return new RegExp(suffix + '$').test(this);
}
/**
 * 去除文本前后空白字符(如:空格、TAB字符等)
 * 
 * @param prefix
 * @return 结果字符串
 */
String.prototype.trim = function() {
  return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
}
// ///////////////////////////////////////////////////
/* Array扩展方法 */
// /////////////////////////////////////////////
Array.prototype.insert = function(index, items) {
  var i = items.isArray() ? items : [items];
  i.unshift(index, 0);
  this.splice.apply(this, i);
  return this;
}

///////////////////////////////////////////////////
/*隐藏自定义属性,不被for in 枚举*/
//////////////////////////////////////////////////
hideFunctions([Object, Date, Number, String, Array]);

© 著作权归作者所有

共有 人打赏支持
z
粉丝 0
博文 2
码字总数 956
作品 1
成都
高级程序员
私信 提问

暂无文章

OSChina 周日乱弹 —— 没时间 没头发 但有钱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @开源中国总经办主任 :分享齐一的单曲《这个年纪》 《这个年纪》- 齐一 手机党少年们想听歌,请使劲儿戳(这里) @肿肿卷 :我真的可以睡一天...

小小编辑
50分钟前
11
4
Django进阶 1.1 ORM基础—ORM 1.2.1 增删改查之查询 1.2.2 删改增 (1) 1.2.3 删改增 (2)

ORM基础 ORM是Django操作数据库的API,Django的作者将sql语句封装在里面供我们使用。 我们前面还提到过Django提供一个模拟数据库的工具,sqlite,供我们学习测试使用。 如果我们想使用mysql...

隐匿的蚂蚁
今天
3
0
Windows 上安装 Scala

在安装 Scala 之前需要先安装 Java 环境,具体安装的详细方法就不在这里描述了。 您可以自行搜索我们网站中的内容获得其他网站的帮助来获得如何安装 Java 环境的方法。 接下来,我们可以从 ...

honeymose
今天
3
0
数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
3
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部