点语法:对象名.属性名(更紧凑,阅读性更高);
字符串语法:对象名['属性名'];
var obj = {
aaa: 10,
tony: 'stark',
sex: '男'
};
var aaa = 'sex';
var iron = 'tony';
console.log(obj.aaa);
console.log(obj['aaa']);
console.log(obj[aaa]);
console.log(obj.sex);
console.log(obj['sex']);
console.log(obj[sex]);
console.log(obj.tony);
console.log(obj['tony']);
console.log(obj.iron);
console.log(obj['iron']);
console.log(obj[iron]);
for (var key in obj) {
console.log(key);
console.log(obj.key);
console.log(obj['key']);
console.log(obj[key]);
};
console.log(obj.aaa);//10
console.log(obj['aaa']);//10
//字符串语法 取aaa变量中存储的字符串对应的属性值: obj['aaa']
console.log(obj[aaa]);//男
console.log(obj.sex);//男
console.log(obj['sex']);//男
//报错: sex is not defined
//这行代码报错的原因不是对象取不出来属性值(属性不存在也不会报错,而是undefined)
//真的原因是sex变量没有声明
console.log(obj[sex]);//报错 这段代码需要注释掉才能执行下方代码
console.log(obj.tony);// stark
console.log(obj['tony']);//stark
//这行代码意思: 点语法取obj的iron属性中存储的数据 undefined
console.log(obj.iron);//undefined
console.log(obj['iron']);//undefined
//字符串语法取 iron变量中存储的字符串对应的属性值 obj['tony']
console.log(obj[iron]);// stark
for(var key in obj){
//key:变量存储obj的属性名字符串
console.log(key);
//取属性名叫做key中存储的值
console.log(obj.key);//undefined
console.log(obj['key']);//undefined
console.log(obj[key]);//for-in循环中唯一的取值方式
};