引用类型

引用类的值(对象)是引用类型的一个实例。在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"
10-06 19:51