// 对象的基本操作
// 与数组的操作基本类似,通过属性,来操作属性值
// 语法方式1 : 对象.属性
// 点语法是特殊规定,可以不加引号
// 点语法不支持数值属性的调用
// 点语法不会解析变量,只会将变量,按照字符串处理
// 语法方式2 : 对象[属性]
// 对象的属性实际上是字符串形式,必须要加引号
// 数值作为属性时,调用数据,加不加引号都行
// 支持变量解析,可以解析变量中存储的数据,作为属性在对象中调用属性
// 变量写在[]中,一定不要加引号,加了引号就成了字符串了
var obj = {name:‘张三‘,age:18,100:100};
// 调用
// 1, 对象.属性
// 调用 obj的name属性中存储的数值值 --- 张三
console.log(obj.name);
// 2, 对象[属性]
console.log(obj[‘name‘]);
console.log(obj["name"]);
console.log(obj[`name`]);
console.log(obj[100]);
console.log(obj[‘100‘]);
// 3, 通过变量存储属性,来调用数据
// 将键名name存储在变量str中
var str = ‘name‘;
// 点语法不会解析变量,会将str直接作为str来处理
// 执行效果就是在obj中找str属性
// 当前对象中没有str属性,执行结果就是undefined
console.log(obj.str);
// []语法支持变量的解析,obj[str]会解析str中存储的数据
// 实际的执行效果就是 obj[str]解析---obj[‘name‘]
console.log(obj[str]);
// 如果添加引号,就变成字符串str,就不是变量str了
console.log(obj[‘str‘]);
// 模板字符串可以解析变量
console.log(obj[`${str}`]);
// 修改
// 与数组的操作类似
// 是对已有的属性进行赋值
// 后赋值的数据,会覆盖之前存储的数据
obj.name = ‘李四‘;
console.log(obj);
// 新增
// 对不存在的属性进行赋值
// 操作效果就是给对象新增单元
obj.addr = ‘北京‘;
// 删除
// delete(对象.属性) 删除对象中的指定属性
// delete(对象[属性]) 删除对象中的指定属性
// delete 对象.属性 删除对象中的指定属性
// delete 对象[属性] 删除对象中的指定属性
// delete(obj.addr);
delete(obj[‘addr‘]);
delete obj.name;