JS学习笔记

发布时间 : 星期一 文章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 位小数;

联系合同范文客服:xxxxx#qq.com(#替换为@)