今天突然看到了同学问我Object.defineproperty的用法,我们讨论了之后,我也乘机复习了Object.defineproperties。
共同点:
它们都是用来定义object的属性的,通过在对象的原型对象上定义,从而是我们能够通过js获得Object的新属性。
不同点:
Object.defineproperty是每次只能定义对象的单个属性,Object.defineproperties每次能定义对象的的多个属性。
话不多说,直接上代码:
/* 定义一个初始对象 */
let obj = {name:'zs',sex:'male'}
/* Object.defineProperties修改对象多个属性用法 */
Object.defineProperties(obj,{
'age':{
value:26,
writable:true, /* 属性可以修改 */
enumerable:true /* 属性可以使用,如果不写都读取不到 */
},
'hobby':{
value:['eat','sleep','play'],
writable:true, /* 属性可以修改 */
enumerable:true /* 属性可以使用 */
}
})
/* Object.defineProperty修改对象单个属性用法 */
Object.defineProperty(obj,'friend',{
value:'rose',
enumerable:true,
writable:true
})
/* 修改对象 */
obj.age=30
/* 为对象添加方法 */
obj.sing = ()=>{
console.log('唱歌');
}
以下是效果截图:
这样我们就实现属性的添加了
不过在最后有一个问题就是我们通过定义一个对象,通过对象.属性也可以实现为对象添加属性,不知道这两者有什么区别?欢迎大家指正。