普通对象:由大括号包裹起来的,由零到多个属性名和属性值(键值对)组成的
那什么是属性呢?
属性:描述当前对象特征的,属性名是当前具备这个特征,属性值是这个特征的描述(专业语法,属性名称为键[key],属性值称为值[value],一组属性名和属性值称为一组键值对)
对象的属性名 可以是数字
var obj={
1:12,
true:100,
null:200,
undefined:300,
{}:400
}
obj[1];//
obj['1'];//
obj.1 ; //语法错误
obj[{}]=300 ;// 存储的是[object Object]: 300
当我们存储的属性名不是字符串和数字,浏览器会把这个值转换为字符串(toString转换),然后在进行存储
属性的操作:增删改查
var obj = { name:'我是一个名字',
age:10
}
//获取属性名的值 (查)
obj.name //obj的name属性名
obj['name'] //正规的获取方式,一般来说,对象的属性名都是字符串格式的,属性值是任意格式的
//增加和修改 var obj1 = {name:'qqq'};
var obj2 = {name:'www'}; obj1.name = '韩梅梅'; //修改
obj1.sex = 20; //增加属性sex
js对象中属性名是不允许重复的,是唯一的,原来有就是修改,原来没有就是增加
//删除属性
var obj3 = {
name:'jack',
age:18
} delete obj3['name'] ;//彻底删除 再获取为undefined
obj3['age'] = null; //假删除,只是将当前属性的值为空,属性名还在 再获取为null
数组对象
数组也是对象,并且数组对象的属性名是数字,我们称为数字属性名为当前对象的索引
var ary =[20,30,40];
ary['0'];//
ary[0]'//20
ary.0 ;//Uncaught SyntaxError: Unexpected number,语法错误
ary.length;//2
ary['length'];//2
ary.age=50 ; [20,30,40,age:50]
数组和对象的关系是啥?
数组是对象的一种细分,对象包含数组,对象拥有的数组一样可以拥有
数组对象属中依次递增的数字属性名叫做索引
思考题:
var obj4 = {name:'lilei'};
var name='hanmeimei';
obj4.name;
obj4['name'];
obj4[name];
答案:
obj4.name;//'lilei'
obj4['name'];// 'lilei'
obj4[name];//undefined 分析:'name'和name区别,
'name'是一个字符串的值
name是一个变量,不是值,代表的是它存储的值,这里没有这个name变量,所以是undefined