JS对象 Object.assign()

对象字面量

JS中的对象:

JavaScript 对象是变量的内容   放置变量或函数

对象字面量是一种简单的键值对数据结构

let obj = {
  Pcode:{a:'1'},
  pName: 'Apple',
  getData() {
    console.log(obj.Pcode, obj.pName);
  }
};
//添加属性
// obj.Pcode=10001;
// obj.pName='Apple';
// obj.getData=function getData(){
//   console.log(obj.Pcode,obj.pName);
// }

console.log(obj);

JS对象ES6 声明 动态属性  []声明动态的值

//设置动态属性
let tValue='Pcode';
//[]声明动态的值

let obj = {
  [tValue]:{a:'1'},
  pName: 'Apple',
  getData() {
    console.log(obj.Pcode, obj.pName);
  }
};


console.log(obj);

 Object.defineProperty(obj,property,descriptor)

Object.defineProperty():方法会在对象上直接定义个新的属性,或者修改现有的属性,并返回此对象,

参数一:obj       绑定属性的目标对象             参数二:property             绑定的属性名
参数三:descriptor
属性描述(配置),      且此参数本身为一个对象

属性值1:value             设置属性默认值
属性值2:writable         设置属性是否能够修改
属性值3:enumerable   设置属性是否可以枚举,即是否允许遍历
属性值4:configurable   设置属性是否可以删除或编辑

//当使用get 和set 不能设置 writable 和configurable
属性值5:get                  获取属性的值 
属性值6:set                设置属性的值

 

//向对象添加只读属性
const pro=Object.defineProperty({},'pCode',{
   writable:false, //为false 只读
  configurable:true,
  enumerable:false,
  configurable: true,
  value:1001,

});

const obj=Object.create(pro);
console.log(obj)
obj.pCode=1002;
console.log(obj.pCode)
delete obj.pCode;



//使用
let obj1 = {   count : 0,  list : [1,2,4] };

let target = {};

for (let key in obj1){
  Object.defineProperty(target,key,{
    value: obj1[key]
  })
}
console.log(target);

Object.assign()

 方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象

Object.assign()方法的第一个参数是目标对象,后面的参数都是源对象

 //克隆对象  循环遍历  2:Object.assign

 let obj3 = { a: 'First' };
 let obj4=Object.assign({},obj1);
 obj4.a='Second';
 console.log(obj3.a);//First

你可能感兴趣的:(JS进阶,javascript,开发语言,ecmascript)