Object.defineProperties(obj, props)
用法:
定义或修改对象的属性,并返回该对象。
参数:
obj : 被修改或添加属性的对象。
props:定义添加到对象的属性及属性描述对象。
返回值:
传递的对象。
示例:
let obj1 = {
name:'zs',
}
let newObj = Object.defineProperties(obj1,{
age:{
value:16,//属性值
writable:true,//是否可改写
configurable:true,//是否可删除
enumerable:false//该属性是否可遍历
}
})
console.log(newObj===obj1,obj1);
打印显示:
Object.defineProperties实现双向绑定
let obj1 = {
name:'zs',
}
let newObj = Object.defineProperties(obj1,{
_age:{ //私有变量
value:20,
writable:true,
enumerable:false//
},
age:{
get:function(){
console.log('get');
return this._age
},
set:function(val){
console.log('set');
this._age = val
},
enumerable:true,
},
})
console.log(newObj);
输出显示
Object.entries(obj)
用法:
Object.entries()方法遍历指定对象的可枚举属性,其排列顺序与for...in..方法遍历对象返回值顺序一样。
参数:
obj:可以返回其可枚举属性的键值对的对象。
返回值:
指定对象自身可枚举属性的键值对数组。
示例:
let obj1 = {
name:'zs',
}
let newObj = Object.defineProperties(obj1,{
_age:{
value:20,
writable:true,
enumerable:false//设置为false,所以_age不可被entries方法遍历
},
age:{
get:function(){
console.log('get');
return this._age