Object类型
定义Object类型的方法
创建Object实例的方式可以说有三种,第一种是通过关键字new后跟构造函数Object来定义:
var obj1 = new Object();
obj1.name = "Tom"; //为对象添加name属性并赋值Tom
obj1.age = 21; //为对象添加age属性并赋值21
第二种方式是通过对象字面量表示法创建对象,属性名与属性值是以值对的形式存在,即属性名与属性值之间用冒号":"隔开:
var obj2 = {
name : "Tom",
age : 21,
5 : ture
};
第三种方式,用字面量表示法,留空花括号,在下一行添加属性也可以:
var obj3 = {};
obj3.name = "Tom";
obj3.age = 21;
当然,第三种方法建议只为其添加默认的属性和方法时使用。
对象字面量方式多用于向函数传递大量可选参数的情况,可以封装多个可选参数。
function displayInfo(obj1) {
var output = "";
//判断传递进来的值是不是字符串,是的话输出字符串。
if (typeof obj1.name == "string"){
output += "name:" + obj1.name + "\n";
}
//判断传递进来的值是不是数字,是的话输出数字。
if (typeof obj1.age == "number") {
output += "age:" + obj1.age + "\n";
}
alert(output);
}
displayInfo({name : "Tom", age : 21});
displayInfo({name : "Tom"});
displayInfo({age : 21});
displayInfo({});
在这个例子中,函数displayInfo()接受一个名为obj1的参数,这个参数可能带有一个名name或age的属性,也可能两个都有或只有其中一个,在这个函数中,通过typeof来检测每个属性是否存在,然后基于相应的属性来输出相应的消息,我们调用四次这个函数,每次都使用一个对象字面量来指定不同的数据,每次输出结果,但每次函数都正常执行。
访问属性的方法
一般来说,访问对象属性时使用的都是点表示法,即对象变量.属性名,除了用点表示法外,也可以用方括号表示法来访问对象的属性,在使用方括号语法时,应该将访问的属性以字符串的形式放于方括号中,即:
alert(obj1.name); //点表示法,弹出Tom
alert(obj1["name"]); //方括号法,以字符串形式放于方括号中,弹出Tom
方括号表示法有个优点,即:可以通过变量来访问属性。(将属性以字符串的形式赋值给一个变量)
var obj = {
name : "Bob",
age : 22
};
var a = "name"; //将属性以字符串的形式赋值给变量a
var b = "age";
alert(obj.name); //效果一样
alert(obj["name"]);
alert(obj[a]); //通过变量来访问属性
alert(obj.age); //效果一样
alert(obj["age"]);
alert(obj[b]); //通过变量来访问属性
除非必须使用通过变量来访问属性,否则还是建议使用点表示法来访问属性更好。