微信小程序开发经验总结
微信小程序开发经验总结(一)
微信小程序开发经验总结(二)
微信小程序开发经验总结(三)
微信小程序开发经验总结(四)
微信小程序开发经验总结(五)
微信小程序开发经验总结(六)
微信小程序开发经验总结(七)
15. 能用上的js知识
string
大小写
//大写 string.toUpperCase(); //小写 string.toLowerCase();
判空
var string; if (!string) {//空}
长度 string.length
正则
//大小写字母 function checkLetter(value){ var str = /^[A-Za-z]*$/; if (str.test(value)) { return true; } return false; } //电话号码 function checkPhone(phone){ if(!(/^1[34578]\d{9}$/.test(phone))){ return false; } return true; }
子字符串
//含start 不含stop stringObject.substring(start,stop)
格式
var str='abc' var str="abc"
数组
push pop
//push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。 arrayObject.push('other line') //pop() 方法用于删除并返回数组的最后一个元素。 arrayObject.pop()
join
//join() 方法用于把数组中的所有元素放入一个字符串。 //元素是通过指定的分隔符进行分隔的。 arrayObject.join(separator) arrayObject.join('\n')
排序
//localeCompare()提供的比较字符串的方法,考虑了默认的本地排序规则 var list = [{ city:'厦门', pinyin:'xiamen' }, { city: '北京', pinyin: 'beijing' }, { city: '长春', pinyin: 'changchun' }, { city: '上海', pinyin: 'shanghai' } ]; list.sort(function (a, b) { return a.pinyin.localeCompare(b.pinyin); }); console.log(list); //reverse() 方法用于颠倒数组中元素的顺序。 arr.reverse()
删除
- //删除起始下标为1,长度为1的一个值(len设置1,如果为0,则数组不变) var arr = ['a','b','c','d']; arr.splice(1,1); console.log(arr); //['a','c','d']; //删除起始下标为1,长度为2的一个值(len设置2) var arr2 = ['a','b','c','d'] arr2.splice(1,2); console.log(arr2); //['a','d']
字符串转数组
var letters = "*abcdefghjklmnopqrstwxyz".split('');
遍历
for(var item in arr) { document.write(arr[item]+","); }
math
string转int
parseInt() var j = parseInt("11")
四舍五入
1.丢弃小数部分,保留整数部分 parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入. Math.round(5/2) 4,向下取整 Math.floor(5/2)
object
用.为对象添加属性
obj.username = "allen"; ??只能添加字符串属性
用关键字delete删除属性
[]添加属性,功能强大,可以动态添加属性
demandData.use_trip[date] = detail;
通过原型对象增加属性或者方法
//方式1:在原有的原型对象上增加属性或者方法 function Person() { } Person.prototype.add = function(){ alert(this.name); }; Person.prototype.name = "aty"; var p1 = new Person(); p1.add();//aty //方式2:重写(覆盖)原型对象 function Person() { } Person.prototype = { add : function(){ alert(this.name); }, name : "aty" } var p2 = new Person(); p2.add();//aty 如果是先创建对象,然后再修改原型,那么如果采用方式1,已经创建的对象能够正确访问修改后的原型;如果采用方式2,已经创建的对象无法访问到修改后的原型。从这个角度来看,显然方式1比方式2更好 原型对象上的所有属性和方法,都会被对象实例所共享 a:原型对象的作用,就是定义所有对象实例所共享的属性和方法。 b:prototype,对于构造函数来说,它是一个属性;对于对象实例来说,它是一个原型对象。
that=this
这属于 JavaScript 的设计缺陷,正确的设计方式是内部函数的 this 应该绑定到其外层函数对应的对象上,为了规避这一设计缺陷,聪明的 JavaScript 程序员想出了变量替代的方法,约定俗成,该变量一般被命名为 that。
var that = this;
var point = { x : 0, y : 0, moveTo : function(x, y) { var that = this; // 内部函数 var moveX = function(x) { that.x = x; }; // 内部函数 var moveY = function(y) { that.y = y; } moveX(x); moveY(y); } }; point.moveTo(1, 1); point.x; //==>1 point.y; //==>1
const var let val
const定义的变量不可以修改,而且必须初始化
const b = 2;//正确 // const b;//错误,必须初始化 console.log('函数外const定义b:' + b);//有输出值 // b = 5; // console.log('函数外修改const定义b:' + b);//无法输出
var定义的变量可以修改,如果不初始化会输出undefined,不会报错。
let是块级作用域,函数内部使用let定义后,对函数外部无影响。
let c = 3; console.log('函数外let定义c:' + c);//输出c=3 function change(){ let c = 6; console.log('函数内let定义c:' + c);//输出c=6 } change(); console.log('函数调用后let定义c不受函数内部定义影响:' + c);//输出c=3
val js原生的没有val方法,val方法一般都是jquery的或者自己定义的
time date
new Date()
new Date(milliseconds) :把毫秒数转换为Date对象 new Date(dateStr) :把字符串转换为Date对象 1) yyyy/MM/dd HH:mm:ss (推荐):若省略时间,返回的Date对象的时间为 00:00:00。 2) yyyy-MM-dd HH:mm:ss :若省略时间,返回的Date对象的时间为 08:00:00(加上本地时区)。若不省略时间,此字符串在IE中会转换失败! iphone6s 失败 new Date(year, month, opt_day, opt_hours, opt_minutes, opt_seconds, opt_milliseconds) :把年月日、时分秒转换为Date对象 1)new Date("month dd,yyyy hh:mm:ss"); 2)new Date("month dd,yyyy"); 3)new Date(yyyy,mth,dd,hh,mm,ss); 4)new Date(yyyy,mth,dd); 5)new Date(ms); Date() 方法可返回当天的日期和时间。