/**
* 扩展基础类
* 得到字符串的长度,包括中文和英文
**/
String.prototype.charlen = function() {
var arr = this.match(/[^\x00-\xff]/ig);
return this.length + (arr == null ? 0 : arr.length);
}
/**
* 扩展基础类
* 格式化字符串${0} -> 参考printf %s
**/
String.prototype.format = function() {
var args = arguments;
return this.replace(/\$\{(\d+)\}/g,
function(m, i){
return args[i];
});
}
/**
* 扩展基础类
* 字符串首尾去空格
**/
String.prototype.trim = function() {
return this.replace(/(^\s*)|(\s*$)/g, "");
}
/**
* 扩展基础类
* 字符串包含字符串判断
**/
String.prototype.contains = function(sub) {
return this.indexOf(sub) != -1;
}
/**
* 扩展基础类
* 字符串比较大小
**/
String.prototype.compare = function(b) {
if(!b)
return -1;
if(this.length != b.length)
return this.length - b.length;
var i = 0;
for (; i < this.length; i++){
var val = this.charCodeAt(i) - b.charCodeAt(i);
if(val != 0)
return val;
}
return 0;
}
/**
* 扩展基础类
* 替换字符
**/
String.prototype.replaceLen = function(start, len, replaced) {
if(!len)
return this;
if(start >= this.length)
return this;
var returnSeg = '';
var returnSeg2 = '';
var i = 0;
for (; i < this.length; i++){
var c = this.charAt(i);
if(i < start)
returnSeg += c;
if(i >= start + len)
returnSeg2 += c;
}
return returnSeg + replaced + returnSeg2;
}
/**
* 扩展基础类
* 替换字符,这个在替换填入比较有用,比如***天***小时 替换为 <input />天<input />小时
**/
String.prototype.replaceChar = function(target, replaced, start) {
if(!target)
return this;
if(!start)
start = 0;
var returnVal = this.substring(0, start);
var index = 0;
for (var i = start; i < this.length; i++) {
var c = this.charAt(i);
target = typeof target == 'function' ? target.call(this, index) : target;
if (c == target) {
returnVal += typeof replaced == 'function' ? replaced.call(this, index) : replaced;
while (i < this.length - 1 && this.charAt(i + 1) == c) {
i++;
}
index++;
}else{
returnVal += c;
}
}
return returnVal;
}
/**
* 扩展基础类
* 克隆复制(简单copy而已)
**/
Array.prototype.clone = function(){
var arr = [];
var i = 0;
for(; i < this.length; i++){
switch(typeof this[i]){
case 'object':
var obj = {};
for(key in this[i])
obj[key] = this[i][key];
arr.push(obj);
break;
default:
arr.push(this[i]);
break;
}
}
return arr;
}
/**
* 扩展基础类
* 清空
**/
Array.prototype.clear = function() {
this.splice(0, this.length);
}
/**
* 扩展基础类
* 数组包含元素
**/
Array.prototype.contains = function(el) {
var i;
for(i = 0; i < this.length; i++) {
if(this[i] == el)
return true;
}
return false;
}
/**
* 扩展基础类
* 数组添加数组
**/
Array.prototype.merge = function(arr) {
if(arr){
var i;
for(i = 0; i < arr.length; i++) {
this.push(arr[i]);
}
}
}
/**
* 扩展基础类
* 根据值和属性获取到数组的对象下标
**/
Array.prototype.indexOf = function(val, field){
var i = 0;
for(; i < this.length; i++){
if(this[i] && (field ? this[i][field] == val : this[i] == val)){
return i;
}
}
return -1;
}
/**
* 扩展基础类
* 最后一个下标
**/
Array.prototype.lastIndexOf = function(val, field){
var i = 0;
var max = -1;
for(; i < this.length; i++){
if(this[i] && (field ? this[i][field] == val : this[i] == val)){
max = i;
}
}
return max;
}
/**
* 扩展基础类
* 数组唯一
**/
Array.prototype.unique = function(field){
var arr = [];
var i = 0;
for(; i < this.length; i++){
var val = field ? this[i][field] : this[i];
var index = this.lastIndexOf(val, field);
if(index == i)
arr.push(this[i]);
}
return arr;
}
/**
* 扩展基础类
* 数组最大值
**/
Array.prototype.max = function(field){
var result = -1;
var i = 0;
for(; i < this.length; i++){
var val = field ? this[i][field] : this[i];
if(val > result)
result = val;
}
return result;
}
/**
* 扩展基础类
* 数组最小值
**/
Array.prototype.min = function(field){
var result = -1;
var i = 0;
for(; i < this.length; i++){
var val = field ? this[i][field] : this[i];
if(val < result)
result = val;
}
return result;
}
/**
* 扩展基础类
* 日期格式化
**/
Date.prototype.format = function(pat){
var year = this.getFullYear();
var month = this.getMonth() + 1;
var day = this.getDate();
var hour = this.getHours();
var minute = this.getMinutes();
var second = this.getSeconds();
// 两位补齐
month = month > 9 ? month : "0" + month;
day = day > 9 ? day : "0" + day;
hour = hour > 9 ? hour : "0" + hour;
minute = minute > 9 ? minute : "0" + minute;
second = second > 9 ? second : "0" + second;
if(!pat){
pat = "yyyy-MM-dd";
}
pat = pat.replace(/yyyy/g, year);
pat = pat.replace(/MM/g, month);
pat = pat.replace(/dd/g, day);
pat = pat.replace(/HH/gi, hour);
pat = pat.replace(/mm/g, minute);
pat = pat.replace(/ss/g, second);
return pat;
}
// 减去时差的毫秒数(取决于使用的浏览器的locale设置)
Date.prototype.getTime2 = function(){
// return this.getTime();
return this.getTime() - this.getTimezoneOffset() / 60 * 3600 * 1000;
}
// 日期相差天数
Date.prototype.diff = function(date){
return Math.ceil((this - date) / (1000 * 60 * 60 * 24));
}
// 日期加减计算
Date.prototype.add = function(days){
return new Date(this.getTime() + days * (1000 * 60 * 60 * 24));
}
// 日期加减计算
Date.prototype.addMonth = function(months){
var day = this.getDate();
var month = this.getMonth() + 1;
var year = this.getFullYear();
month += months;
if(month > 12){
year += Math.floor(month / 12);
month = month % 12;
}
return Date.parse(month + '/' + day + '/' + year);
}
// 解析字符串,以默认 pat = "yyyy-MM-dd"的格式,而不是MM/dd/yyyy
Date.parse2 = function(str, pat){
if(str == null || str == '')
return new Date();
var rstr = str.replace(/(\d{4})([-\./])(\d{1,2})\2(\d{1,2})/, "$3/$4/$1");
return new Date(Date.parse(rstr));
}
// 解析字符串,json date obj
// 减去时差的毫秒数(取决于使用的浏览器的locale设置)
Date.parse3 = function(obj){
// return new Date(obj.time);
return new Date(obj.time - new Date().getTimezoneOffset() / 60 * 3600 * 1000);
// var str = obj.year + '-' + (obj.month + 1) + '-' + obj.date + ' ' +
// obj.hours + ':' + obj.minutes + ':' + obj.seconds;
// return Date.parse2(str);
}
其中日期部分是为了和后台json-lib交互用,用了时间戳。
分享到:
相关推荐
### js扩展基础类知识点 #### 一、字符串长度计算(charlen) 在JavaScript中,标准的`String`对象并未提供直接获取包含中文字符在内的多字节字符长度的方法。本段代码通过扩展`String.prototype`实现了这一功能。...
不过,随着技术的发展,现代Web开发中更多地倾向于使用库和框架(如jQuery、React、Vue等),它们提供了更高级别的抽象和封装,但掌握JavaScript基础和如何在ASP.NET中有效利用JavaScript仍然是每个Web开发者必备的...
JavaScript 类的继承是面向对象编程中的重要概念,它允许创建一个新的类(子类),该类不仅具有自身定义的属性和方法,还能够继承一个现有类(父类)的属性和方法。在JavaScript ES6 中,引入了`class`语法来支持类...
### JavaScript基础知识点总结 #### 一、语言概念与发展历程 - **语言定义**:计算机语言是一种人与计算机之间沟通的工具。人们通过编程语言来控制和操作计算机完成特定任务。 - **语言发展历史**: - **早期阶段...
【标题】"JS的一个时间段的...总的来说,"JS的一个时间段的特效"是一个结合了JavaScript基础、DOM操作、事件处理、日期时间管理、CSS样式和用户体验设计等多个方面知识的实践案例,对于提升前端开发技能非常有价值。
例如,WebPage类可能有一个`ExecuteJavaScript`方法,允许开发者传递一段JS代码并执行;还可能有一个`GetDocument`方法,返回网页的DOM(文档对象模型),以便于操作网页元素。 在提供的压缩包文件中,`WebPage.cpp...
然而,随着Node.js的出现,JavaScript也扩展到服务器端开发,成为全栈开发的重要工具。因此,深入理解JavaScript的基础语法和高级特性,对于任何Web开发者来说都是至关重要的。 首先,基础入门阶段会涵盖JavaScript...
在这个例子中,我们创建了一个V8JavaScript对象实例,然后执行了一段简单的JavaScript代码。V8Js类提供了丰富的API,使得从PHP调用JavaScript函数、传递数据以及处理JavaScript返回的结果变得简单。 总结来说,...
1. JavaScript基础:学习ECMAScript的基本规则,这是JavaScript的核心语言部分。 2. ES6实战:了解并应用ES6引入的新特性,如箭头函数、类、模板字符串等。 3. 面向对象编程:理解面向对象的概念并学会在JavaScript...
综上所述,Adobe AIR 3.1 的本机扩展开发涵盖了从基础概念到具体实现的全过程,通过灵活地利用ActionScript与本机代码的结合,开发者可以构建出功能强大且性能优异的应用程序。无论是C语言还是Java语言,都有详细的...
### JavaScript多线程的实现方法 #### 背景与概念 在JavaScript中,传统的单线程模型限制了其在复杂应用中的性能表现。随着Web应用程序功能日益强大,多线程的支持变得越来越重要。虽然原生JavaScript是基于事件...
React.js 是一个流行的JavaScript库,用于构建用户界面,特别是单页应用程序(SPA)。VS Code(Visual Studio Code)是一款由微软开发的免费、跨平台、源代码编辑器,它支持多种编程语言并拥有丰富的插件系统。这个...
JavaScriptInterface是Android提供的一种机制,允许我们创建一个Java类,并标记为@JavascriptInterface,这样类中的方法就可以被JavaScript调用。这是安全的,因为只有标记了此注解的方法才能在WebView中执行,防止...
函数在JavaScript中扮演着重要角色,它是一段可重复使用的代码块。函数可以有参数,也可以返回值。ES6引入了箭头函数,其语法更加简洁。函数还有作用域的概念,包括全局作用域和局部作用域,以及ES6引入的块级作用域...
React 基础实用知识库分享 React 基础知识库分享是 React 开发者的必备知识库,涵盖了 React 的基础知识点,从安装 React 到高级使用。以下是知识点总结: 安装 * 使用 npm 安装 Create React App:`npm install ...
最后,JavaScript也支持一些高级特性,如解构赋值、模板字符串、默认参数、剩余与扩展运算符、类(class)、Symbol等。随着ES版本的更新,新的语法特性和API不断引入,为开发者提供了更多便利。 综上所述,这十张JS...
【Java基础知识】 1. Java的基本数据类型包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。String并不是基本数据类型,而是一个对象,它是类`java.lang.String`...
下面是一段使用`prototype.js`进行Ajax请求的示例: ```javascript new Ajax.Request('url/to/server', { method: 'post', parameters: {key: 'value'}, onSuccess: function(response) { console.log('成功...
对象是键值对的集合,而类则是面向对象编程的基础,允许创建具有特定属性和方法的对象实例。 JavaScript的主要应用领域包括DOM(Document Object Model)操作,它可以改变HTML元素、属性和内容。AJAX(Asynchronous...
在"JavaScript基础_java_zip_源码"这个主题中,我们主要关注的是JavaScript的基本概念、语法以及如何通过 ZIP 文件处理相关的编程实践。 首先,JavaScript 基础包括变量、数据类型、操作符、控制流(条件语句和循环...