let my_love = Object.create({name:'Cindy',occupation:'angel'},{age:{value:18,writable:false,enumerable:false,configurable:false}});
1.上述语句中,writable:false 表示不可再次被写入; enumerable:false 不可被迭代/枚举 configurable:false 不可再次被删除/修改/设置
从上述描述中,可知,writable:false 的效果等同于configurable:false,不允许属性age的值再次被修改
for(let property in my_love)
此for语句只会迭代两次,因为age属性被设置为enumerable:false不可迭代,因此for语句第一次迭代是name,第二次是occupation
2.判断两个对象实例的数据是否完全相同 Object.is()
Object.is('mars’,'Mars') //返回false
Object.is([],[]) //返回false,因为两个空数组占用不同的内存地址
Object.is(['good','day'],['good','day']) //返回false,同样是因为占用不同的内存地址
Object.is(NaN,0%0) //返回true,0%0无法被评估为数值,返回原始常量NaN
3.合并多个对象实例的所有成员(属性和函数),Object.assign()
4.通过大括号里的中括号 例如[id+'_name'],可动态赋予特定对象实例的新成员的名称
let id = 'CN24';
var one_item = {[id+'_name']:'video set',[id+'_price']:300};
//one_item为{CN24_name:'video set',CN24_price:300}
//one_item['CN24_name'] 等同于one_item.CN24_name 等于 one_item[id+'_name']
5.对象实例的匹配
var person = {name:'Jimmy',age:20,gender:'male'};
var person2 = {name:'Erica',age:40,gender:'female'};
var{name,age,gender} = person; //将Jimmy,20,male分别赋值给name,age,gender
({name,age,gender}) = person2; //因为变量name,age,gender已经被声明过,再次设置变量的值,只需要一对小括号
var {name:value01,age:value02,gender:value03} = person2; //此时name,age,gender不是变量名称,而是属性名称
var {name,...others} = person2; //此语句声明了name值为Erica,others为{age:40,gender:'female'}的对象实例