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 中包含一个空格,所以不能使用点表示法来访问它。
注意:除非使用变量来访问属性,否则建议使用点表示法。