JS高级——Object、浅拷贝、深拷贝

JS高级——Object、浅拷贝、深拷贝
摘要由CSDN通过智能技术生成

Object

数据属性包含四个特征:

        1.configurable:表示能否对该属性进行配置,比如使用delete删除,能否修改属性特征等。默认为true。

        2.enumerable:表示能否被枚举,比如是否可以用for-in循环获取属性,默认为true。

        3.writeable:表示是否可写,是否能修改属性的值。默认为true。

        4.value:包含属性的数据值,默认为undefined。

访问器属性包含四个特征

        1.get:读取属性时

        2.set:设置属性时

        3.configurable:表示能否通过delete删除此属性,能否修改属性的特征,或能否修改把属性修改为访问器属性,默认为true

        4.enumber:表示该属性是否可枚举,即是否通过for-in循环或Object.keys()返回属性,默认为true

	//设置对象属性的静态参数    
	Object.defineProperty(obj, 'a', {
      value:123,
      writable:true,
      configurable: true,
      enumerable: false,
    })
	//设置对象属性的访问器参数
    Object.defineProperty(obj, 'a', {
      get: () => {
        //这里不能使用this.a来访问属性a。会造成死循环
        //a认为是当前访问器内的局部变量
        return a;
      },
      //obj.a = 456;
      //n 就是接收456的
      set: (n) => {
        a = n;
      },
      configurable: true,
      enumerable: false,
    })

	

	//一次设置多个属性
    Object.defineProperties(obj,{
      'a':{},
      'b':{}
    })

defineProperty设置对象的属性时,如果设置为访问器,则不能同时设置静态属性。

defineProperty设置属性或访问器时,除了get、set之外,其他的属性默认是false。

  //此时没有设置configurable、enumerable、writable默认值都是false
	Object.definePropertie(obj,'a' {
      value: 1
    })

对象方法

    var a = { a: 1, b: 2 };
    var b = { b: 4, c: 5 };
    var c = Object.assign(a, b)
    console.log(
      a === c//true,assign方法会直接修改a,并且返回值就是a
    )
	//assign方法,通常用来做对象的合并或克隆
    var obj = { a: 1, b: 2 };
    // 浅拷贝
    var obj2 = Object.assign({}, obj);
    //深拷贝
    var obj2 = JSON.parse(JSO
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值