您的位置:首页 > Web前端 > JavaScript

JavaScript程序开发(十)—js语法之数据类型

2012-05-29 23:46 936 查看
  在前面的几篇博客中学习到了ECMAScript-262的几种基本数据类型,接下来要学习的就是复杂的数据类型Object、Array、Date、RegExp、Function、基本包装类型和内置对象7种类型,复杂数据类型又称为引用类型。在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。在其他如Java、C#等面向对象的语言中它被称为类(class)。但因为ECMAScript不具备传统的面向对象语言所支持的类和接口等基本结构,因此,在ECMAScript中将其称为类不是很合适。

Object类型

在ECMAScript中,Object是其他一切类型的基类,好比Java中的java.lang.Object。仅仅创建Object类型的实例是没有什么意义的,但关键是理解上面那句话的思想,即Object是js中的基类。Object的每个实例都具有下列的属性和方法:

constructor构造函数—保存用于创建当前对象的函数。如下面的代码实例,对象obj的constructor值是function Object()

<script type="text/javascript">
var obj = new Object();
var cons = obj.constructor;
document.write(cons);  //function Object()
</script>


hasOwnProperty(propertyName)—用于检测给定的属性是否在当前对象实例中(而不是在对象实例的原型中)。其中,作为参数名称的propertyName必须是以字符串形式指定。

<script type="text/javascript">
var obj = new Object();
var flag = obj.hasOwnProperty("name");
var cons = obj.constructor;
document.write(cons);  //function Object()
</script>


isPrototypeOf(object)—用于检测传入的对象是否是另一个对象的原型。关于原型的知识将在后续博客中介绍。

propertyIsEnumerable(propertyName)—用于检测给定的属性能否使用for-in语句来枚举。与hasOwnProperty()方法一样,作为参数的属性名需以字符串形式指定。

toString()—返回对象的字符串表示;

valueOf()—返回对象的字符串、数值或布尔值表示。

创建Object类型实例的方式有两种:

new操作符;

function test(){
var person = new Object();
person.name = "Hello World!";
person.age = 23;
}


在使用new操作创建新对象时,如果不给构造函数传递参数,那么可以省略后面的那一对圆括号,但是不推荐,如下代码实例所示:

function test(){
var person = new Object();
var obj = new Object;
person.name = "Hello World!";
person.age = 23;
}


对象字面量表示法。

var person = {
name : "Hello World!",
age : 12
}


在上面代码可以看出来,不同的属性之间用逗号隔开,但是最后一个属性后面没有逗号。如果在最后一个属性后面也加了逗号,会在IE和Opera中导致错误。在对象字面量中,属性名也可以是字符串,如

var obj = {
"name":"hello world",
"age":12
}


使用对象字面量语法时,如果大括号留空,则可以定义只包含默认方法和属性的对象,起作用和使用new操作符创建对象而不添加属性和方法相同,如下代码

var person = {} // 等同于var person = new Object();


  在通过对象字面量定义对象时,实际上不会调用Object的构造函数,firefox除外。

  一般来说,访问对象属性都是使用点(.)表示法,在很多的编程语言中都使用这个方法,但在ECMAScript中有另一种表示方法,就是使用方括号,但是在使用方括号时,要将要访问的属性以字符串的形式放在方括号中。如下代码实例所示:

document.write(person.name);
document.write(person.age);
document.write(person["name"]);
document.write(person["age"]);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: