引用类型的值(对象)是引用类型的一个实例,引用类型是一种数据结构,用于将数据和功能组织在一起。
对象是某个特定引用类型的实例,新对象是使用new操作符后跟一个构造函数来创建的。构造函数本身就是一个函数,只不过该函数是出于创建新对象的目的而定义的。
var person = new Object();
这行代码创建了Object()引用类型的新实例,然后把该实例保存在了变量person中,使用的构造函数是Object,它只为新对象定义了默认的属性和方法。
创建Object()实例的方式有两种:
第一种是使用new操作符后跟Object构造函数。
var person = new Object();
person.name = "zhangsan";
person.age = 18;
第二种是使用对象字面量表示法。对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程,对象属性名可读性好,下面这个例子使用对象字面量方法定义了与上面例子相同的person对象:
var person = {
name : "zhangsan",
age : 18
};
使用对象字面量方法时,属性名也可以是字符串:
var person = {
"name" : "zhangsan",
"age" : 18,
5 : true
};
这个例子会创建一个对象,包含三个属性:name,age和5,这里的数值属性名(5)会自动转化为字符串("5")。
使用对象字面量方法时,如果留空花括号,则可以定义只包含默认属性和方法的对象:
var person = {};//与new Object()相同
person.name = "zhangsan";
person.age = 18;
对象字面量属性也是向函数传递大量可选参数的首选方式:
function displayInfo(args){
var output = "";
if(typeof args.name == "string"){
output += "Name:" + args.name + "\n";
}
if(typeof args.age == "number"){
output += "Age" + args.age + "\n";
}
alert(output);
}
displayInfo({
name : "zhangsan",
age : 18
});
displayInfo({
name : "lisi"
});
我们调用两次这个函数,每次都使用一个对象字面量来指定不同的数据,两次调用传递的参数不同,但是函数都能正常运行。
最好的做法是对那些必须值使用命名参数,而使用对象字面量来封装多个可选参数。
访问对象属性的两种方法:
第一种是对象点属性
alert(person.name);//"zhangsan"
第二种是使用方括号,将要访问的属性以字符串的形式放在方括号中
alert(person["name"]);//"zhangsan"
从功能上看,这两种方法没什么区别,但是,方括号语法的主要优点是可以通过变量来访问属性
var propertyName = "name";
alert(person[propertyName]);//"zhangsan"
如果属性名中包含会导致语法错误的字符,或者属性名使用的是关键字或者保留字,也可以用方括号表示法:
person["first name"] = "zhangsan";
由于”first name”中包含一个空格,所以不能使用点表示法来访问它,属性名中是可以包含非字母非数字的,这时候可以用方括号来访问它们。