var str = "", str2 = ""; var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1]; numbers.forEach(function (item, index, array) { str += item + "_"; }); //**************其实我们完全可以自己模拟实现******* numbers.myforEach = function (fun) { for (var i = 0; i < numbers.length; i++) { fun(numbers[i], i, numbers); } } numbers.myforEach(function (item, index, array) { str2 += item + "*"; }) //*************************************************** alert("str:" + str + " str2:" + str2); var str = "", str2 = ""; var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1]; numbers.forEach(function (item, index, array) { str += item + "_"; }); //**************其实我们完全可以自己模拟实现******* numbers.myforEach = function (fun) { for (var i = 0; i < numbers.length; i++) { fun(numbers[i], i, numbers); } } numbers.myforEach(function (item, index, array) { str2 += item + "*"; }) //*************************************************** alert("str:" + str + " str2:" + str2);
归并方法
reduce()和 reduceRight(),这两个方法是比较有意思的,以前还真没接触过。先看例子,再解释:
var values = [1,2,3,4,5]; var sum = values.reduce(function(prev, cur, index, array){ return prev + cur; }); alert(sum); //15
也是个循环,第一次执行 prev 是 1, cur 是 2。第二次, prev 是 3(1 加 2 的结果), cur 是 3(数组的第三项)。这个过程会持续到把数组中的每一项都访问一遍,最后返回结果。reduceRight只是方向相反。
下面我们来模拟:
var numbers = [1, 2, 3, 4, 5, 3]; var sum = numbers.reduce(function (prev, cur, index, array) { return prev + cur; }); //***********************模拟实现reduce************************** numbers.myreduce = function (fun) { for (var i = 0; i < numbers.length; i++) { var temp = 0; for (var j = 0; j < i; j++) temp += numbers[j]; var tempNum = fun(temp, numbers[i], i, numbers); } return tempNum; } //************************************************* var sum2 = numbers.myreduce(function (prev, cur, index, array) { return prev + cur; }) alert("sum:" + sum + " sum2:" + sum2); // var numbers = [1, 2, 3, 4, 5, 3]; var sum = numbers.reduce(function (prev, cur, index, array) { return prev + cur; }); //***********************模拟实现reduce************************** numbers.myreduce = function (fun) { for (var i = 0; i < numbers.length; i++) { var temp = 0; for (var j = 0; j < i; j++) temp += numbers[j]; var tempNum = fun(temp, numbers[i], i, numbers); } return tempNum; } //************************************************* var sum2 = numbers.myreduce(function (prev, cur, index, array) { return prev + cur; }) alert("sum:" + sum + " sum2:" + sum2); //
Date类型
我们很多时候需要测试一个函数的性能,可以取它的执行进过时间:
//取得开始时间 var start = Date.now(); //调用函数 doSomething(); //取得停止时间 var stop = Date.now(), result = stop – start;
下面列出一些常用方法
getTime() 返回表示日期的毫秒数;与valueOf()方法返回的值相同
setTime(毫秒) 以毫秒数设置日期,会改变整个日期
getFullYear() 取得4位数的年份(如2007而非仅07)
getUTCFullYear() 返回UTC日期的4位数年份
setFullYear(年) 设置日期的年份。传入的年份值必须是4位数字(如2007而非仅07)
setUTCFullYear(年) 设置UTC日期的年份。传入的年份值必须是4位数字(如2007而非仅07)
getMonth() 返回日期中的月份,其中0表示一月, 11表示十二月
getUTCMonth() 返回UTC日期中的月份,其中0表示一月, 11表示十二月
setMonth(月) 设置日期的月份。传入的月份值必须大于0,超过11则增加年份
setUTCMonth(月) 设置UTC日期的月份。传入的月份值必须大于0,超过11则增加年份
getDate() 返回日期月份中的天数(1到31)
getUTCDate() 返回UTC日期月份中的天数(1到31)
setDate(日) 设置日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份
setUTCDate(日) 设置UTC日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份
getDay() 返回日期中星期的星期几(其中0表示星期日, 6表示星期六)
getUTCDay() 返回UTC日期中星期的星期几(其中0表示星期日, 6表示星期六)
getHours() 返回日期中的小时数(0到23)
getUTCHours() 返回UTC日期中的小时数(0到23)
setHours(时) 设置日期中的小时数。传入的值超过了23则增加月份中的天数
setUTCHours(时) 设置UTC日期中的小时数。传入的值超过了23则增加月份中的天数
getMinutes() 返回日期中的分钟数(0到59)
getUTCMinutes() 返回UTC日期中的分钟数(0到59)
setMinutes(分) 设置日期中的分钟数。传入的值超过59则增加小时数
setUTCMinutes(分) 设置UTC日期中的分钟数。传入的值超过59则增加小时数
getSeconds() 返回日期中的秒数(0到59)
getUTCSeconds() 返回UTC日期中的秒数(0到59)
setSeconds(秒) 设置日期中的秒数。传入的值超过了59会增加分钟数
setUTCSeconds(秒) 设置UTC日期中的秒数。传入的值超过了59会增加分钟数
getMilliseconds() 返回日期中的毫秒数
getUTCMilliseconds() 返回UTC日期中的毫秒数
setMilliseconds(毫秒) 设置日期中的毫秒数
setUTCMilliseconds(毫秒) 设置UTC日期中的毫秒数
getTimezoneOffset() 返回本地时间与UTC时间相差的分钟数。例如,美国东部标准时间返回300。在某地进入夏令时的情况下,这个值会有所变化
RegExp类型
两种表示法:
var pattern1 = /at/g; var re = new RegExp("cat", "g");
后面的参数代表模式,如:g:表示全局(global)模式、i:表示不区分大小写(case-insensitive)模式、m:表示多行(multiline)模式
关于正则了解不是很清楚,后期有机会在单独学习整理正则这块。
Function类型
三种表示法:
function sum (num, num) { return num + num; } var sum = function(num, num){ return num + num; }; var sum = new Function("num", "num", "return num + num");