js对象小总结

目录

1.定义对象

2.对象的可计算属性名

3.复制对象

4.对象属性描述符

4.1创建一个真正的常量

4.2禁止对象添加新属性并且保留自身属性



1.定义对象

有两种方法可以定义对象

1.文字语法

var myObj={
      key:value
    }

2.构造形式

var myObj=new Object();
myObj.key=value;

2.对象的可计算属性名

ES6新增加的可计算属性名

var prefix='foo';
    var prefix2='boo';
    var myObject={
      [prefix+'bar']:'hello',
      [prefix2+'bar']:'world'
    }
myObject.foobar;//hello
myObject.boobar;//world

3.复制对象

对象的复制分为浅复制和深复制。对于浅复制来说,新对象中的属性其实只是引用,他们和旧对象中的引用是一样的。

深复制的问题比较复杂,除了复制myObject以外还会复制anotherArray和anotherObject,但是anotherArray引用了myObject和anotherObject,所以还需要复制myObject,这样就会造成死循环

function anotherFunction(){
      console.log('anotherFunction');
    };
    var anotherObject={
      c:true
    };
    var anotherArray=[];
    var myObject={
      a:2,
      b:anotherObject,//引用
      c:anotherArray,//引用
      d:anotherFunction
    };
    anotherArray.push=(anotherObject,myObject);

ES6新增浅复制方法

var newObject=Object.assign({},myObject);//第一个参数是目标对象第二个参数是源对象

4.对象属性描述符

var myObject={
      a:2
    }
    var a=Object.getOwnPropertyDescriptor(myObject,'a');
    console.log(a);
//{value: 2,
//writable: true,属性是否可以改写
//enumerable: true, 属性是佛可以枚举
//configurable: true属性是否可以配置
//}

4.1创建一个真正的常量

这个常量不可修改,不可重定义,不可以删除

var myObject={
      a:2
    }
    Object.defineProperty(myObject,"FAVORITE_NUMBER",{
      value:2,
      writable:false,
      configurable:false
    })

4.2禁止对象添加新属性并且保留自身属性

可以使用Object.preventExtensions(..)

var myObject={
      a:2
    }
Object.preventExtensions(myObject);
myObject.b=3;
console.log(myObject.b);//undefined

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值