日期:2014-05-16  浏览次数:20397 次

javascript对象和数组/大括号和中括号

么是对象?把一些"名字-属性"的组合放在一个单元里面,就组成了一个对象。我们可以理解为javascript中的对象就是一些"键-值"对的集合(An object is a collection of named values. These named values are usually referred to as properties of the object.--《javascript-the definitive guide,5th edition》Section3.5)。
属性名只能是string类型,不能是其他类型,而属性的类型则是任意的(数字/字符串/其他对象...)。可以用new Object()来创建一个空对象,也可以简单的用"{}"来创建一个空对象,这两者的作用是等同的。

一、{ }大括号,定义一个对象。

定义一个对象:
var user = {"name":"zhangs", "age":28};
也可以写成:
var name =? "zhangs", user = {name:name, age:28};

以上两种方式声明的user对象,最终效果是一样的。属性名加不加字符串引号,解析器最终也将其当成字符串,而不会解析成变量的值作为属性名。
访问一个对象的属性,可以用"."来访问:user.name、user.age,也可以用"[]"访问:user["name"]、user["age"],在"[]"里的属性名要加引号,因为对象中的索引都是字符串类型。javasript对象中属性个数是可变的,创建一个对象后可随时对它赋予任何属性。

通过"."操作符获取对象的属性,必须得知道属性的名字。而"[]"操作符获取对象属性的功能更强大一些,可以在"[]"中放入一些表达式来获取属性值,比如在循环控制语句中,而"."操作符则没有这种灵活性。

?

delete操作符可以删除对象中的某个属性,遍历属性可以使用"in"操作符。

var user = {name:"zhangs", age:10, 'intro':"He is the world's best players."}, userinfo = '';
for (var p in user) {
    userinfo += p + ':' + user[p] + '  '; 
}
alert(userinfo);
		
delete user.name;
userinfo = '';
for (var p in user) {
    userinfo += p + ':' + user[p] + '  '; 
}
alert(userinfo);

?


二、[ ]中括号,定义一个数组,也可以理解为数组对象。

定义一个数组:
var users = ["zhangs", "lis", "wange"];
也可以写成:
var users = Array("zhangs", "lis", "wange");

数组用"[]"访问,如: users[0]、users[1]。

定义索引为字符串的数组:
var users = [];
users["name"] = "zhangs";
users["age"] = 20;
users["intro"] = "He is the world's best players.";


三、对象和数组常用混合用法。

var config = {
    switcher: true,
    mapbox: {mousewheel:true, split:8},
    raw: [2600, 1082],
    callback: function() {
    config.counter ++;
    },
    counter: 0
};

config.callback();
alert(config.counter);

上述代码显示将显示数字1。

?

?