引用类型之Object
引用类型
引用类的值(对象)是引用类型的一个实例。在ECMAScript中,引用类型是一种数据结构,用于将数据和功能组织在一起。
对象是某个特定引用类型的实例。新对象是使用new操作符后跟一个构造函数来创建的。构造函数本身就是一个函数,只不过该函数是出于创建新对象的目的而定义的。
var person=new Object();
这行代码创建了Object
引用类型的一个新实例,然后把该实例保存在了变量person
中。使用的构造函数是Object
,它只为新对象定义了默认的属性和方法。ECMAScript提供了很多原生引用类型。
Object类型
创建Object
实例的方式:
第一种,使用new操作符后跟Object构造函数,如下
var person=new Object();
person.name="breeze";
person.age="20";
另一种方式是使用对象字面量表示法。对象字面量是对象定义的一种简写形式
var person={
name:"breeze",
age:20
}
对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。
在使用对象字面量语法时,属性名也可以使用字符串,如下
var person={
"name":"breeze",
"age":20
}
这个例子创建了一个对象,包含两个属性:name和age,但这里的数值属性名会自动转换成字符串,另外,使用对象字面量语法的时候,也可以留花括号然后自定义属性和方法,例如
var person={};
person.name="breeze";
person.age=20;
注意点:对象字面量语法,更推荐在只考虑对象属性名的可读性时使用
实例
虽然可以使用前面任何一种方法来定义对象,但是对象字面量也是向函数传递大量参数的首选方式,例如
function dispalyInfo(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)
}
dispalyInfo({
name:"breeze",
age:20
})
//name:breeze
//age:20
在这个例子中,函数displayInfo( )接收一个名为args的参数,这个参数可能带有名为name和age的属性,也可能啥也没有,在这个函数内部,我们通过typeof
操作符来检测每个属性是否存在,然后基于相应的属性来构建出要显示的信息。我们调用这个函数时,所使用的时对象字面量语法来指定不同的数据。
注:这种传参模式最适合需要向函数传入大量可选参数的情形。
对象属性
一般来说,访问对象属性都是用的点表示法,不过也可以使用方括号来访问对象的属性。在使用方括号语法时,应该将要访问的属性以字符串的形式放在方括号中,例子如下
alert(person.name)
alert(person["name"])
从功能上,两种方法没有区别,但方括号语法的主要优点是可以通过变量来访问属性,例如
var person={
"name":"breeze",
"age":20
}
var propertyName="name";
alert(person[propertyName]); //"breeze"