您的位置:首页 > Web前端 > JavaScript

javascript高级程序设计笔记(第五章)

2016-11-09 17:33 260 查看
1.Object类型

(1)var person = new Object();或者{}

person.name = “Nicholas”;

person.age = 29;

(2)var person = {

name : “Nicholas”,

age : 29

};属性名也可以是字符串

(3)对象属性可以用两种方式表示

alert(person[“name”]); //”Nicholas”

alert(person.name); //”Nicholas

2.Array类型

(1)每一项可以是不同的类型

var colors = new Array(“red”, “blue”, “green”);

var colors = new Array(20);

var colors = new Array();

var colors = Array(3);

var colors = [“red”, “blue”, “green”];

var names = []; // 创建一个空数组

var values = [1,2,]; // 不要这样!这样会创建一个包含2 或3 项的数组

var options = [,,,,,]; // 不要这样!这样会创建一个包含5 或6 项的数组

数组的length 属性很有特点——它不是只读的。因此,通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项。没有的会是undefined

colors[colors.length] = “black”; //(在位置3)添加一种颜色

var colors = [“red”, “blue”, “green”]; // 创建一个包含3 个字符串的数组colors[99] = “black”; // (在位置99)添加一种颜色alert(colors.length); // 100

(2)检测数组

if (value instanceof Array){

//对数组执行某些操作

}

if (Array.isArray(value)){

//对数组执行某些操作

}

(3)转换方法

var colors = [“red”, “blue”, “green”]; // 创建一个包含3 个字符串的数组

alert(colors.toString()); // red,blue,green

alert(colors.valueOf()); // red,blue,green

alert(colors); // red,blue,green

stack:push()和pop()方法

LIFO:shift()和push()方法unshift()

reverse()和sort(),返回值是经过排序之后的数组

values.sort(compare);

concat()方法可以基于当前数中的所有项创建一个新数组。具体来说,这个方法会先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组

slice(),它能够基于当前数组中的一或多个项创建一个新数组

var colors = [“red”, “green”, “blue”, “yellow”, “purple”];

var colors2 = colors.slice(1);

var colors3 = colors.slice(1,4);

 删除:可以删除任意数量的项,只需指定2 个参数:要删除的第一项的位置和要删除的项数。例如,splice(0,2)会删除数组中的前两项。

 插入:可以向指定位置插入任意数量的项,只需提供3 个参数:起始位置、0(要删除的项数)和要插入的项。如果要插入多个项,可以再传入第四、第五,以至任意多个项。例如,splice(2,0,”red”,”green”)会从当前数组的位置2 开始插入字符串”red”和”green”。

 替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3 个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。例如,splice (2,1,”red”,”green”)会删除当前数组位置2 的项,然后再从位置2 开始插入字符串”red”和”green”。

indexOf()和lastIndexOf()。这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引

** every():对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。

 filter():对数组中的每一项运行给定函数,返回该函数会返回true 的项组成的数组。

 forEach():对数组中的每一项运行给定函数。这个方法没有返回值。

 map():对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

 some():对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true。**

var numbers = [1,2,3,4,5,4,3,2,1];

var everyResult = numbers.every(function(item, index, array){

return (item > 2);

});

alert(everyResult); //false

var someResult = numbers.some(function(item, index, array){

return (item > 2);

});

alert(someResult); //true

var filterResult = numbers.filter(function(item, index, array){

return (item > 2);

});

alert(filterResult); //[3,4,5,4,3]

归并数组的方法:reduce()和reduceRight()。

3.Date

var now = new Date();在调用Date 构造函数而不传递参数的情况下,新创建的对象自动获得当前日期和时间

var someDate = new Date(Date.parse(“May 25, 2004”));

Date.now();

 toDateString()——以特定于实现的格式显示星期几、月、日和年;

 toTimeString()——以特定于实现的格式显示时、分、秒和时区;

 toLocaleDateString()——以特定于地区的格式显示星期几、月、日和年;

 toLocaleTimeString()——以特定于实现的格式显示时、分、秒;

 toUTCString()——以特定于实现的格式完整的UTC 日期。

与toLocaleString()和toString()方法一样,以上这些字符串格式方法的输出也是因浏览器

而异的,因此没有哪一个方法能够用来在用户界面中显示一致的日期信息。

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。在某地进入夏令时的情况下,这个值会有所变化

4.RegExp 类型

RegExp 类型来支持正则表达式 过后单独开一章,细看

5.Function 类型

因为ECMAScript 中的函数名本身就是变量,所以函数也可以作为值来使用。也就是说,不仅可以

像传递参数一样把一个函数传递给另一个函数,而且可以将一个函数作为另一个函数的结果返回。来看

一看下面的函数。

function callSomeFunction(someFunction, someArgument){

return someFunction(someArgument);

}

这个函数接受两个参数。第一个参数应该是一个函数,第二个参数应该是要传递给该函数的一个值。

然后,就可以像下面的例子一样传递函数了。

function add10(num){

return num + 10;

}

var result1 = callSomeFunction(add10, 10);

alert(result1); //20

function getGreeting(name){

return “Hello, ” + name;

}

var result2 = callSomeFunction(getGreeting, “Nicholas”);

alert(result2); //”Hello, Nicholas”

在函数内部,有两个特殊的对象:arguments 和this。其中,arguments 在第3 章曾经介绍过,它是一个类数组对象,包含着传入函数中的所有参数。虽然arguments 的主要用途是保存函数参数,

但这个对象还有一个名叫callee 的属性,该属性是一个指针,指向拥有这个arguments 对象的函数。

function factorial(num){

if (num <=1) {

return 1;

} else {

return num * arguments.callee(num-1)

}

}

call()方法与apply()方法的作用相同,它们的区别仅在于接收参数的方式不同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript