发布时间 : 星期一 文章JS学习笔记更新完毕开始阅读
JavaScript学习
一.Label标签配合break,continue实现循环退出
例子:
varnum = 0; outermost:
for (vari=0; i< 10; i++) { for (var j=0; j < 10; j++) { if (i == 5 && j == 5) { continue outermost; }
num++; } }
alert(num); //95 内部循环中
的break 语句带了一个参数:要返回到的标签。添加这个标签的结果将导致break 语句不仅会退出内
部的for 语句(即使用变量j 的循环),而且也会退出外部的for 语句(即使用变量i的循环)
二.判断对象的引用类型
alert(person instanceof Object); // 变量person 是Object 吗?
三.数组toString()可实现逗号(,)拼接字符串
var people = [1, \
console.log(people); //[1, \
console.log(people.toString());//1,dsd Join()方法也可实现,同时支持其他字符;
var colors = [\alert(colors.join(\alert(colors.join(\
四.队列方法
结合使用shift()和push()方法,可以像使 用队列一样使用数组。
var colors = new Array(); //创建一个数组
var count = colors.push(\推入两项 alert(count); //2
count = colors.push(\推入另一项 alert(count); //3
var item = colors.shift(); //取得第一项 alert(item); //\
alert(colors.length); //2
五.splice()方法(数组任意位置删除、插入、替换)
var colors = [\
var removed = colors.splice(0,1); // 删除第一项 alert(colors); // green,blue
alert(removed); // red,返回的数组中只包含一项
removed = colors.splice(1, 0, \从位置1 开始插入两项
alert(colors); // green,yellow,orange,blue alert(removed); // 返回的是一个空数组
removed = colors.splice(1, 1, \插入两项,删除一项 alert(colors); // green,red,purple,orange,blue alert(removed); // yellow,返回的数组中只包含一项
六.迭代方法
?every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。
?filter():对数组中的每一项运行给定函数,返回该函数会返回true 的项组成的数组。
?forEach():对数组中的每一项运行给定函数。这个方法没有返回值。
?map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
?some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。
以上方法都不会修改数组中的包含的值。
七.Date()兼容说明
支持Data.now()方法的浏览器包括IE9+、Firefox 3+、Safari 3+、Opera 10.5 和Chrome。在不支 持它的浏览器中,使用+操作符把Data 对象转换成字符串,也可以达到同样的目的。
//取得开始时间
var start = +new Date(); //调用函数 doSomething(); //取得停止时间
var stop = +new Date(), result = stop - start;
toDateString()——以特定于实现的格式显示星期几、月、日和年; \
?toTimeString()——以特定于实现的格式显示时、分、秒和时区; \
?toLocaleDateString()——以特定于地区的格式显示星期几、月、日和年; \
?toLocaleTimeString()——以特定于实现的格式显示时、分、秒; \下午2:52:57\
?toUTCString()——以特定于实现的格式完整的UTC 日期。 \
与toLocaleString()和toString()方法一样,以上这些字符串格式方法的输出也是因浏览器
而异的,因此没有哪一个方法能够用来在用户界面中显示一致的日期信息。 UTC 日期指的是在没有时区偏差的情况下(将日期转换为GMT 时间) 的日期值。
直接获取和设定日期特定部分的方法介绍见120页
八.函数内部属性
有两个特殊的对象:arguments 和this。虽然arguments 的主要用途是保存函数参数,
但这个对象还有一个名叫callee的属性,该属性是一个指针,指向拥有这个arguments 对象的函数。为
了消除这种紧密耦合的现象,可以像下面这样使用arguments.callee。 function factorial(num){ if (num<=1) { return 1; } else {
return num * arguments.callee(num-1)}}
九.每个函数都包含两个非继承而来的方法:apply()和call()
apply()方法接收两个参数:一个 是在其中运行函数的作用域,另一个是参数数组。其中,第二个参数可以是Array 的实例,也可以是
arguments 对象。例如: function sum(num1, num2){ return num1 + num2; }
function callSum1(num1, num2){
return sum.apply(this, arguments); // 传入arguments 对象 }
function callSum2(num1, num2){
return sum.apply(this, [num1, num2]); // 传入数组 }
alert(callSum1(10,10)); //20 alert(callSum2(10,10)); //20
call()方法与apply()方法的作用相同,它们的区别仅在于接收参数的方式不同。对于call()
方法而言,第一个参数是this 值没有变化,变化的是其余参数都直接传递给函数。换句话说,在使用
call()方法时,传递给函数的参数必须逐个列举出来,如下面的例子所示。 function sum(num1, num2){ return num1 + num2; }
functioncallSum(num1, num2){
returnsum.call(this, num1, num2); }
alert(callSum(10,10)); //20
使用call()(或apply())来扩充作用域的最大好处,就是对象不需要与方法有任何耦合关系。
bind()方法:这个方法会创建一个函数的实例,其this 值会被绑 定到传给bind()函数的值。
十.Number引用类型
toFixed():,IE8 及之前版本不能正确舍入范围在{(?0.94,?0.5],[0.5,0.94)}之间的值,之后的版本已修复。
toPrecision()方法可以表现1 到21 位小数;