<!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>
高级面向对象之 包装对象
最新推荐文章于 2025-05-03 21:29:40 发布