简介
(1)在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法
(2)大多数引用类型值都是Object类型的实例
(3)Object对于在应用程序中存储和传输数据而言,是非常理想的选择
创建方法
使用new操作符后跟Object构造函数
例如:
var person = new Object();
person.name = "Nicholas";
person.age = 29;
使用对象字面量表示法
对象字面量是对象定义的一种简写形式,目的在于简化创建 包含大量属性的对象的过程
表示方式
(1)默认方式
var person = {
name : "Nicholas",
age : 29 };
(2)属性名使用字符串
var person = {
"name" : "Nicholas",
"age" : 29,
5 : true
};
(3)留空其花括号,定义只包含默认属性和方法的对象
var person = {}; //与 new Object()相同
person.name = "Nicholas"; person.age = 29;
优点
(1)语法要求的代码量少,而且能够给人封装数据的感觉
(2)方便向函数传递大量可选参数
例如:
function displayInfo(args) {
var output = "";
//typeof 操作符来检测 每个属性是否存在
if (typeof args.name == "string") {
output += "Name: " + args.name + "\n";
}
if (typeof args.age == "number") {
output += "Age: " + args.age + "\n";
}
//基于相应的属性来构建一条要显示的消息
alert(output);
}
//使用一个对象字面量来指定不同的数据
displayInfo({
name: "Nicholas",
age: 29
});
//两次调用传递的参数虽然不同,但函数都能正常执行
displayInfo({
name: "Greg"
});
访问属性方式
点表示法
alert(person.name); //"Nicholas"
方括号语法
alert(person["name"]); //"Nicholas"
区别
(1)方括号语法的主要优点是可以通过变量来访问属性
var propertyName = "name";
alert(person[propertyName]); //"Nicholas"
(2)如果属性名中包含会导致语法错误的字符,或者属性名使用的是关键字或保留字,也可以使用方括号表示法
//由于"first name"中包含一个空格,所以不能使用点表示法来访问它。然而,属性名中是可以包含非字母非数字的,这时候就可以使用方括号表示法来访问它们
person["first name"] = "Nicholas";
(3)除非必须使用变量来访问属性,一般使用点表示法。
扩展
关于JavaScript对象,可以参考我的另外两篇博客:
面向对象的程序设计——理解对象
http://blog.youkuaiyun.com/iamcgt/article/details/72178586
面向对象的程序设计——创建对象
http://blog.youkuaiyun.com/iamcgt/article/details/72190538
参考
《JavaScript高级程序设计》