高级面向对象之 包装对象

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>包装对象</title>
	</head>
	<body>
		<script>
			前言:
			1.首先我们先来了解一下javascript的数据类型 
				a:5个基本数据类型:
					<1>:String 类型:String类型用于表示由零个或多个16位Unicode字符串组成的字符序列,既字符串
					<2>:Number 类型:可取值 浮点数,整数,NaN(not a number)
					<3>:Boolean类型:取值只有 true 和false
					<4>:Undefined类型:undefined类型只有一个值,既特殊的undefined,在使用var声明一个变量但未对其
						初始化时,这个变量的值就是undefined
					<5>:Null类型:Null类型只有一个值,这个特殊的值为null,null表示一个空对象指针,这也正是使用typeof
						操作符检测null值时会返回'object'的原因
				b:引用类型Object
					<1>:Object类型:ECMAScript中的对象其实就是一组数据和功能的集合.对象可以通过执行new操作符后跟
						要创建的对象的名称来创建,而创建object类型的实例并为其添加属性和方法,就可以创建自定义对象.
						如:
						 var o = new Object();
						每个object实例都拥有下列属性和方法:
						1.constructor: 保存着用于创建当前对象的函数,对于var o = new Object(),构造函数就是object();
						2.hasOwnProperty(propertyName):用于检查给定的属性在当前的实例中(而不是在实例的原型中)是否存在
						3.isPrototypeOf(object):用于检查传入的对象是否是当前对象的原型
						4.propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in 语句
						5.toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应
						6.toString():返回对象的字符串表示
						7.valueOf():返回对象的字符串,数值,或布尔表示.通常与toString()方法的返回值相同
						
						ps:由于在ECMAScript中object是所有对象的基础,因此所有对象都具有这些基本的属性和方法
						   (既object所具有的所有属性和方法,也同样存在于更具体的对象中.如Math,Function等)
			2.正题
			看一个例子:
			var str = 'hello';
			alert(typeof str);
			str.charAt(0);  // 获取第一个字符 为 h
			例子中我们声明了一个值为hello的字符串,然后通过 typeof操作符检测它的类型 发现为 string ,表示str 为基本类型中
			的string类型,既然str为基本类型(而不是对象),怎么能够调用方法获得第一个字符呢?
			原因是 对于 String,Number,Boolean这三种基本数据类型他们有自己的包装对象,分别为String,Number,Boolean
			那我们通过基本对象调用方法的时候的过程是什么呢?
			
			如 str.indexOf(0) :基本类型会找到对应的包装对象类型,然后包装对象把所有的属性和方法给了基本类型,
							  然后包装对象消失
			
			对于基本数据类型我们是不能给其添加属性和方法的,但是我们又想使用某些方法或者属性该怎么办呢?
			我们可以把相应的方法或属性添加到包装对象的原型上,这样我们基本类型就可以使用扩展属性和方法了
			
			如:
			 String.prototype.lastValue(){
			 	return this.charAt(this.length-1);
			 }
			 
			 str.lastValue();//这样str就可以调用了
			
		</script>
	</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值