<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
/**
* 在js中 所有的东西都是对象 类似与java中的Map<String,Object>
*
* 属性名一定是字符串
*
* 创建对象的几种方式
* 第一种 基于object
* 第二种 简写形式{key:val}
*
*
* 给对象添加属性和赋值的时候:
* 添加属性的两种方式 如果原来存在对应的属性 则表示更新对应属性的值
* . 用点号的形式直接添加属性
* [] 用中括号的形式添加属性
*
* 当访问属性的时候 如果该对象不存在对应的属性 则返回undefined
*
*
*/

var user = new Object({"id":123});
user.username = 'lisi';
user['age'] = 20;
user.say = function(msg){
alert(msg)
};
console.log(user);
console.log(user.username)
console.log(user['age'])
user['username'] = 'zhangsan';
console.log(user.username);

//对象的属性删除
delete user.age;

//user.say("Hello")
console.log(user['age']);

console.log("-------------------")
/**
* 点号的形式 user.key 不会去解析key的具体值 而是直接去得到对应对象里面的建为key的值
* [] user[key] 会解析key的具体值 常用作属性的动态获取
*/
for(var key in user){
console.log(user[key]);
}

console.log("---------JSON---------")
/**
* 简写形式
* JSON JavaScript原生对象 数据交换格式
* 键不能重复 如果键 是一个完整的单词 可以直接写 如果键里面包含了空格 要用引号引起来
* @type {{city: string, province: string}}
*/
var address = {
"city":"成都",
province:'四川',
aaa:{
name:'Test',
value:{
value:"123"
}
},
bbb:[{
name:"lisi"
},{
name:"zhangsan"
},{
name:"wangwu"
}],
say:function(){

}
};

console.log(address.aaa['value'].value)
</script>
</head>
<body>

</body>
</html>