JavaScript第五章总结
第五章
引用类型
引用类型是一种数据结构,用于将数据和功能组织在一起。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。
1.object类型
(1)创建方法:第一种是使用 new 操作符后跟 Object 构造函数,第二种是使用对象字面量表示法(推荐使用)。
var person = {
name : "Nicholas",
age : 29
};
(2)访问对象属性:一般来说,访问对象属性时使用的都是点表示法,这也是很多面向对象语言中通用的语法。不过,在 JavaScript 也可以使用方括号表示法来访问对象的属性。在使用方括号语法时,应该将要访问的属性以字符串的形式放在方括号中。方括号语法的主要优点是可以通过变量 来访问属性。如果属性名中包含会导致语法错误的字符,或者属性名使用的是关键字或保留字,也可以使用方括 号表示法。
2.Array类型
(1)创建方法:第一种是使用 Array 构造函数,第二种是使用数组字面量表示法。
var colors = ["red", "blue", "green"]; // 创建一个包含 3 个字符串的数组
var values = [1,2,]; // 不要这样!这样会创建一个包含 2 或 3 项的数组
var options = [,,,,,]; // 不要这样!这样会创建一个包含 5 或 6 项的数组
(2)Length属性(返回数组长度)
数组的 length 属性很有特点——它不是只读的,可以从数组的末尾移除项或向数组中添加新项。
(3)数组最多可以包含 4 294 967 295 个项
(4)检测数组
if (Array.isArray(value)){
//对数组执行某些操作
}
(5)转换方法
toString()、toLocaleString()、join()
(6)栈方法(后进先出)
push()末尾接收和 pop()末尾移出,返回移出项
(7)队列方法(先进先出)
shift()首项移出,返回移出项和 push()方法
unshift()在数组前端添加任意个项并返回新数组的长度和pop()
(8)重排序方法
reverse()反转数组项的顺序和 sort()
排序:
Function compare(value1,value2)
{
If(value1<value2)
{
Return -1;
}
If(value1>value2)
{
Return 1;
}
else{
Return 0;
}
}
Var values=[0,1,5,10,15];
Values.sort(compare);
Alert(values); //0,1,5,10,15
(9)操作方法
concat()创建当前数组的副本
slice()基于当前数组中的一或多个项创建一个新数组
splice()三个参数,第一个指定位置,第二个删除个数,第三个要插入的项,返回值是数组是删除的项
(9)位置方法
indexOf()从前往后和 lastIndexOf()从后往前,都有两个参数,第一个是查找项,第二个是查找起点
(10)迭代方法
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
(11)归并方法
reduce()从前到后和 reduceRight()从后到前
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
return prev + cur;
});
alert(sum); //15
3.Date类型
(1)创建方法:var now = new Date()
4.RegExp类型
(1)字面量形式定义正则表达式:
var expression = / pattern / flags ;
Flag:
g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即
停止;
i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写;
m:表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模
式匹配的项。
与其他语言中的正则表达式类似,模式中使用的所有元字符都必须转义。正则表达式中的元字符包括:
( [ { \ ^ $ | ) ? * + .]}
/*
* 匹配所有以"at"结尾的 3 个字符的组合,不区分大小写
*/
var pattern3 = /.at/gi;
/*
* 匹配所有".at",不区分大小写
*/
var pattern4 = /\.at/gi;
(2)RegExp 构造函数创建正则表达式,两个参数,一个是要匹配的字符串模式,第二个是可选的标志字符串,转义时需要双重转义\
var pattern2 = new RegExp("[bc]at", “i”);
5.Function类型(函数)
(1)使用不带圆括号的函数名是访问函数指针,而非调用函数。
(2)没有重载
function addSomeNumber(num){
return num + 100;
}
function addSomeNumber(num) {
return num + 200;
}
var result = addSomeNumber(100); //300
后面的函数覆盖了前面的函数
(3)函数声明
函数声明与函数表达式的语法其实是等价的
alert(sum(10,10));
function sum(num1, num2){ //函数声明,此处不能将function赋给sum变量
return num1 + num2;
}
(4)函数名本身就是变量,可以作为值进行传递,函数的嵌套
(5)使用 arguments.callee,完成递归调用,不用引用函数名
(6)this 值(引用的是函数据以执行的环境对象,当在网页的全局作用域中调用函数时,this 对象引用的就是 window)
(7)length 属性表示函数希望接收的命名参数的个数
(8)apply()和 call()。这两个方法的用途都是在特定的作用域中调用函数,实际上等于设置函数体内 this 对象的值。
(9)bind()。这个方法会创建一个函数的实例,其 this 值会被绑定到传给 bind()函数的值。
6.基本包装类型
(1)Boolean类型
var falseObject = new Boolean(false);
var result = falseObject && true;
alert(result); //true
示例中的这行代码是对falseObject 而不是对它的值(false)进行求值。前面讨论过,布尔表达式中的所有对象都会被转换为 true,因此 falseObject 对象在布尔表达式中代表的是 true。
var falseValue = false;
result = falseValue && true;
alert(result); //false
(2)Number类型
toString()方法传递一个表示基数的参数,告诉它返回几进制数值的字符串形式。
toFixed()方法会按照指定的小数位返回数值的字符串表示。
toExponential()e表示法
toPrecision()方法可能会返回固定大小(fixed)格式,根据参数而定
(3)String类型
var stringObject = new String("hello world");
属性:length长度
1.字符
charAt()访问特定字符返回字符
charCodeAt()访问特定字符返回字符编码
2.字符串
concat()用于将一或多个字符串拼接起来,可以接受多个参数(与+同)
两个参数,第一个参数是开始位置
slice()第二个参数是结束位置
substr()第二个参数是结束位置
substring()第二个参数返回个数
slice()方法会将传入的负值与字符串的长度相加,substr()方法将负的第一个参数加上字符串的长度,而将负的第二个参数转换为 0。最后,substring()方法会把所有负值参数都转换为 0。
var stringValue = "hello world";
alert(stringValue.slice(-3)); //"rld"
alert(stringValue.substring(-3)); //"hello world"
alert(stringValue.substr(-3)); //"rld"
alert(stringValue.slice(3, -4)); //"lo w"
alert(stringValue.substring(3, -4)); //"hel"
alert(stringValue.substr(3, -4)); //""(空字符串)
3.字符串位置方法(可选的第二个参数,表示从字符串中的哪个位置开始搜索)
indexOf()从头和 lastIndexOf()从尾
4.trim()方法,删除前缀和后缀空格
5.转换大小写
toLowerCase()toLocaleLowerCase()小写
toUpperCase()和 toLocaleUpperCase()大写
6.字符串模式的匹配方法
match()本质上与调用 RegExp 的 exec()方法相同
search()一个参数与 match()方法的参数相同:由字符串或 RegExp 对象指定的一个正则表达式
replace()两个参数:第一个参数可以是一个 RegExp 对象或者一个字符串(这个字符串不会被转换成正则表达式),第二个参数可以是一个字符串或者一个函数。
split()(分隔符)方法可以接受可选的第二个参数,用于指定数组的大小
7.字符串比较
localeCompare()
8.fromCharCode()。这个方法的任务是接收一或多个字符编码,然后将它们转换成一个字符串。
7.Globa对象
8.Math对象
上一篇: JavaScript第五章:性能考虑