Object类型
在JavaScript中,大多数引用类型值都是Object类型的实例。对于在应用程序中存储和传输数据而言,使用Object类型是一个很明智的选择。
创建Object实例
创建Object实例有两种方法:
第一种是使用new操作符后跟object构造函数,如下所示:
var person = new Object();
person.name = "诺男";
person.age = 20;
console.log(person.name,person.age); //"诺男" 20
第二种是使用对象字面量表示法。**对象字面量是对象定义的一种简写形式,目的在于简化创建包含大量属性的对象的过程。**例如:
var person = {
name: "诺男",
age : 20
};
console.log(person.name,person.age); //"诺男" 20
我们在例子中定义了一个属性name,之后是一个冒号,最后是这个属性的值。在对象字面量中,使用逗号分隔不同的属性。
在使用对象字面量时,属性名也可以是字符串,比如:
var person = {
"name" : "诺男",
"age" : 20,
};
console.log(person.name,person.age); //"诺男" 20
在使用对象字面量属性时,如果花括号中为空,则可以定义只包含默认属性和方法的对象。例如:
var person = {}; //相当于new Object()
person.name = "诺男";
person.age = 20;
console.log(person.name,person.age); //"诺男" 20
这个例子中创建对象的方法与前面的例子是等价的。
虽然有两种方法来定义对象,但是我个人更加倾向于第二种,因为它能够给我一种类似于Java语言中类的封装,将数据封装在一起。实际上,对象那个字面量也是想函数传递大量可选参数的首选方式。比如:
function binNuo(args) {
var bin = "";
if (typeof (args.name == "string")) {
bin += "Name:" + args.name + "\n";
}
if (typeof (args.age == "number")) {
bin += "Age:" + args.age + "\n";
}
console.log(bin);
}
binNuo({
name:"诺男",
age :20
});
binNuo({
name:"王彬",
age :22
});
在这个例子中,函数binNuo()接收了一个名字为args的参数。这个参数可以带有name和age属性,也可能这两个属性都有或者都没有。在这个函数内部,我们通过typeof操作符检测每个属性是否存在,然后再根据相应的属性来构建一条显示消息。我们分别调用两次binNuo()函数,每次使用一个对象字面量来指定不同的数据。这两次调用传递的参数虽然不同,但是函数都正常执行。
这种传递参数的模式最适合需要向函数传入大量可选参数的情况。一般来说,命名参数虽然容易处理,但在有多个可选参数的时候就不是那么容易了。最好的做法是对那些必须值使用命名参数,使用对象字面量来封装多个可选参数。