首页 > 代码库 > JS高程5.引用类型(1)Object类型

JS高程5.引用类型(1)Object类型

引用类型

  在ECMASCript中,引用类型是一种数据结构,将数据和功能组织在一起,引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。(注意:尽管ECMAScript从技术上讲是一门面向对象的语言,但是它不具备传统面向对象语言所支持的类和接口等基本结构。)

 

1.Obiect类型

创建Object类型的两种方式:

(1)使用new操作符后跟Objec构造函数

 

1 var person=new Object();
2     person.name="Linshuling";
3     person.age=19;

 

(2)使用对象字面量表示法(简写形式,简化创建包含大量属性的对象的过程。)

1 var person={
2         name:"Linshuling",
3         age:19
4     };
5     alert(person.name);

注意:

  在对象字面量中,使用逗号来分隔不同的属性,因此“Linshuling”后面是一个逗号,但是在age属性的值19后面不能加逗号,因为age是这个对象的最后一个属性。在最后一个属性后面添加逗号,会在IE7及更早的版本和Opera中导致错误。

 

使用对象字面量语法时,属性名也可以使用字符串。

eg:

1 var person={
2        "name" :"Linshuling",
3        "age" :19,
4        5:true
5     };

注意:这里的数值属性名会自动转换为字符串。

 

另外,使用对象字面量语法时,如果留空其花括号,则可以定义只包含默认属性和方法的对象。

eg:

1 var person={};  //与new Object()相同
2     person.name="Linshuling";
3     person.age=19;
4     alert(person.age);

 

 

注意:

  在通过对象字面量定义对象时,实际上是不会调用Object构造函数(Firefox2及更早版本会调用;但是Firefox3之后就不会了)。实际上,开发人员更倾向对象字面语法,因为这种语法要求的代码量少,而且能够给人封装数据的感觉。

  对象字面量也是向函数传递大量可选参数的首选方式。

eg:

 1  function displayInfo(args){
 2         var output="";
 3         if(typeof args.name=="string"){
 4             output+="Name:"+args.name+"\n";
 5         }
 6         if(typeof args.age=="number"){
 7              output+="Age:"+args.age+"\n";
 8         }
 9 
10         alert(output);
11     }
12     displayInfo({
13         name:"Linshuling",
14         age:29
15     });
16 
17     displayInfo({
18         name:"lin"
19     });

 

技术分享

技术分享

  这种传递参数得模式最适合需要向函数传入大量可选参数的情形。

 

 

2.访问对象的方法

(1)点表示法

(2)方括号表示法

eg:

1 var person=new Object();
2     person.name="Linshuling";
3     person.age=19;
4     alert(person.name);
5     alert(person["age"]);

注意:

alert(person["age"]);属性名称age要加“”,不然会出现错误。



方括号的优点:
(1)可以通过变量来访问属性
eg:
1 var n="name";
2     alert(person[n]);

(2)如果属性名中包含导致语法错误的字符,或者属性名使用的是关键字或是保留字,也可以使用方括号表示法。

1 person["first name"]="Linshuling";

由于first name 中包含一个空格,所以不能使用点表示法来访问它。

注意:除非使用变量来访问属性,否则建议使用点表示法。

 

 

JS高程5.引用类型(1)Object类型