JavaScript高级程序设计3--引用类型(下)

接上篇:JavaScript高级程序设计--引用类型(上)

四、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:它是保存所有实例方法的真正所在,在创建自定义引用类型以及实现继承时,是很重要的。
(2)每个函数都包含两个非继承而来的方法:apply()和call()

  • 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对象的角色;
2.Math对象
  • min()和max()方法;
  • 舍入方法:Math.ceil()、Math.floor()、Math.round();
  • random()方法:返回大于等于0小于1的一个随机数;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值