Object类型
一、相关概念
1.引用类型:是一种数据结构,用于将数据和功能组织在一起
2.ECMAScript是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构
3.引用类型也称为对象定义,因为它描述的是一类对象所具有的属性和方法
4.对象是某个特定引用类型的实例
5.新对象是使用new操作符后跟一个构造函数来创建的
6.构造函数本身就是一个函数,只不过该函数是出于创建新对象的目的而定义的
var person=new Object();
//创建了object引用类型的一个新实例,然后把该实例保存在了变量person中。使用的构造函数是Object,它只为新对象定义了默认的属性和方法
//ECMAScript提供了很多原生引用类型(例如Object)
二、Object实例的方法
1.使用new操作符后跟Object构造函数
var person=new Object();
person.name="Nicholas";
person.age=29;
2.使用字面量表示法
- 对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程
- 在通过对象字面量定义对象时,实际上不会调用Object构造函数
var person={
name:"Nicholas",
age:29
};
//在对象字面量中,使用逗号来分隔不同不同属性
//但是29后面不能添加逗号,因为它是最后一个属性。在最后一个属性后面添加逗号,会在IE7及更早的版本和Opera中,导致错误
var person={
"name":"Nicholas",
"age":29,
5:true
};
//在使用对象字面量语法时,属性名也可以使用字符串
//数值属性名会自动转换为字符串
var person={};//与new Object()相同
person.name="Nicholas";
person.age=29;
//在使用对象字面量语法时,如果留空其花括号,则可以定义只包含默认属性和方法的对象
function displayInfo(args){
var output="";
if(typeof args.name=="string"){
output += "Name" + args.name + "\n";
}
if(typeof args.name=="number"){
output += "Age: " + args.age + "\n";
}
alert(output);
}
displayInfo({
name:"Nicholas",
age:29
});
displayInfo({
name:"Greg",
});
//推荐使用,能够给人封装数据的感觉
//实际上,对象字面量也是向函数传递大量可选参数的首选方式
三、访问属性
1.点表示法
- 一般来说,访问对象属性时使用的都是点表示法
- 从功能上看,这两种访问对象属性的方法没有任何区别
- 通常,除非必须使用变量来访问属性,否则建议使用点表示法
alert(person.name);//"Nicholas"
2.方括号表示法
- 在使用方括号语法时,应该将要访问的属性以字符串的形式放在方括号中
- 主要优点是可以通过变量来访问属性
- 如果属性名包含会导致语法错误的字符,或者使用属性名使用的是关键字或保留字
alert(person["name"]);//"Nicholas"
var propertyNmae="name";
alert(person[propertyName]);//"Nicholas"
person["first name"]="Nicholas"
//first name中包含一个空格,所以不能使用点表示法来访问
//属性名是可以包含非字母非数字的,这时候就用方括号表示法开访问
源于整理《JavaScript高级程序设计》