四、RegExp类型
RegExp类型是ECMAScript支持正则表达式的一个接口,提供了最基本的和一些高级的正则表达式功能。
var expression = / pattern /flags;//创建一个正则表达式
其中,pattern是任何简单或复杂的正则表达式。
flags用以标明正则表达式的行为,它支持三个标志
- g:表示全局模式
- i:表示不区分大小写模式
- m:表示多行模式
var pattern1 = /[bc]at/i; 等价于 var pattern2 = new RegExp("[bc]at", "i");
1.RegExp实例属性:
- global:布尔值,表示是否设置了g标志。
- ignoreCase:布尔值,表示是否设置了i标志。
- lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起。
- multiline:布尔值,表示是否设置了m标志。
- source:正则表达式的字符串表示(按照字面量形式)。
2.RegExp实例方法:exec()和test()方法
exec()方法:接受一个参数(要应用模式的字符串),返回包含第一个匹配项信息的数组。
var text = "mom and dad and baby";
var pattern = /mom( and dad( and baby)?)?/gi;
var matches = pattern.exec(text);
alert(matches.index); //0
alert(matches.input); //"mom and dad and baby"
alert(matches[0]); //"mom and dad and baby"
alert(matches[1]); //" and dad and baby"
alert(matches[2]); //" and baby"
test()方法:接收一个字符串参数,在模式与参数匹配的情况下返回true,否则返回false。
var text = "000-00-0000";
var pattern = /\d{3}-\d{2}-\d{4}/;
if (pattern.test(text)){
alert("the pattern was matched.");
}
五、Function类型
每个函数都是function类型的实例,因此“函数是对象,函数名是指针”。
1.解析器会率先读取函数声明,而函数表达式则必须等到解析器执行到它所在代码才会被解释执行。
2.callee属性:该属性是一个指针,指向拥有这个arguments对象的函数。
//阶乘函数
function factorial(num){
if (num <=1){
return 1;
} else{
return num*arguments.callee(num-1);
}
}
3.this引用的是函数执行的环境对象。
4.caller属性中保存着调用当前函数的函数的引用。
5.函数属性和方法
(1)每个函数都包含两个属性:length和prototype
- length:表示函数希望接收的命名参数的个数。
- prototype:它是保存所有实例方法的真正所在,在创建自定义引用类型以及实现继承时,是很重要的。
- apply():接收两个参数,一个是在其中运行函数的作用域,另一个是参数数组。
- call():作用与apply()相同,不同的是第一个参数是this值,其余参数都直接传递给函数。
function sum(num1, num2){
return num1+num2;
}
function callSum1(num1, num2){
return sum.apply(this, arguments); //或者return sum.apply(this, [num1, num2]);
}
function callSum2(num1, num2){
return sum.call(this, num1, num2);
}
alert(callSum1(10,10)); //20
alert(callSum2(10,10)); //20
(3)bind()方法会创建一个函数的实例,其this值会被绑定到传给bind()函数的值。
window.color = "red";
var o = {color: "blue"};
function sayColor(){
alert(this.color);
}
var objectSayColor = sayColor.bind(o);
objectSayColor(); //blue
六、基本包装类型
三种基本包装类型:Boolean、Number和String,可以被当做对象来访问,它们具有以下特征:
- 每个包装类型都映射到同名的基本类型;
- 在读取模式下访问基本类型值时,就会创建对应的基本包装类型的一个对象。
- 操作基本类型值的语句一经执行完毕,就会立即销毁新创建的包装类型。
1.Number类型方法
- toFixed():会按照指定的小数位返回数值的字符串表示。
- toExponential():返回以指数表示法表示的数值的字符串形式。
- toPrecision():返回表示某个数值的最合适的格式。
2.String类型方法
- 字符方法:charAt()和charCodeAt();
- 字符串操作方法:concat()、slice()、substr()和substring();
- 字符串位置方法:indexOf()和lastIndexOf();
- trim()方法:会创建一个字符串的副本,删除前置及后缀的所有空格,返回结果;
- 字符串大小转换方法:toLowerCase()、toLocaleLowerCase()、toUpperCase()、toLocaleUpperCase();
- 字符串模式匹配方法:match()、search()、replace()、split();
- localeCompare():比较两个字符串;
- fromCharCode():接收一个或多个字符编码,然后将它们转换成一个字符串;
七、单体内置对象
在所有代码执行之前,作用域中就已经存在两个内置对象:Global和Math。
1.Global对象
- URI编码方法:encodeURI()、encodeURIComponent();
- eval()方法:只接收一个参数,即要执行的JS字符串;
- window对象:扮演Global对象的角色;
- min()和max()方法;
- 舍入方法:Math.ceil()、Math.floor()、Math.round();
- random()方法:返回大于等于0小于1的一个随机数;