• Object.defineProperty用法


    Object.defineProperty() 定义新属性和修改原有的属性

    Object.defineProperty( obj,prop,descriptor)

    翻译:对象.定义属性(对象,属性名必须是字符写法,{ value:所有 })

    创建一个对象:

    1. var obj = {
    2. id:1,
    3. pname:'小米',
    4. price:1999
    5. } ;

    以前的对象添加和修改属性方式:

    1. obj.num = 1000; //直接新添加属性
    2. obj.price = 99; //直接修改属性
    3. console.log(obj);

    现在新的写法 添加属性:

    1. Object.defineProperty(obj,'num',{
    2. value:1000
    3. });
    4. console.log(obj);

    现在新的写法 修改属性:

    1. Object.defineProperty(obj,'price',{
    2. value:9.9
    3. });
    4. console.log(obj);

    限定死一个值,不允许修改:   writable用法

    1. Object.defineProperty(obj,'id',{
    2. //如果值是false 不允许修改属性值,是true就可以修改
    3. writable:true,
    4. });
    5. obj.id = 2,
    6. console.log(obj);
    7. //是turn 可改 false不可改

    判断是否可以被枚举,遍历 writable:  true 可以允许遍历 ,false不允许

    1. Object.defineProperty(obj, 'address', {
    2. value: '凡科优向公司',
    3. writable: false,
    4. // enumerable:如果值是false 则不允许遍历,默认值是false
    5. enumerable: false
    6. });
    7. console.log(obj);
    8. console.log(Object.keys(obj));

     判断是否可以被删除或者是是否可以再次修改特性ture\false   默认是false

        configurable:true 可以允许删除 ,false不允许

    1. Object.defineProperty(obj, 'address', {
    2. value: '凡优向公司',
    3. writable: false,
    4. // enumerable:如果值是false 则不允许遍历,默认值是false
    5. enumerable: false,
    6. // configurable:如果值是false 则不允许删除这个属性,默认值是false
    7. configurable: false
    8. });
    9. console.log(obj);
    10. console.log(Object.keys(obj));
    11. delete obj.address;
    12. console.log(obj);

    总结:例子中:如果是自己添加num,想可以获取属性forEash . key(obj) 中出现num,那么需要设置enumerable: true,才显示。

    如果第一次已经设置我是为configurable: false,那后面在改成configurable: ture 会报错,告诉您不能重复修改特性。

     

        

  • 相关阅读:
    面对企业微信私域流量增长的瓶颈,有哪些策略可以突破?
    C#:实现SieveOfEratosthenes埃拉托斯特尼筛法寻找素数算法(附完整源码)
    C#编程学习
    【一起撸个DL框架】5 实现:自适应线性单元
    模拟滴答声
    什么是无线传输技术,如Wi-Fi、蓝牙和NFC的特点和应用场景
    传奇黑客斯诺登,现状如何了?
    Java百度地图教程:创建地图应用与基本API的使用
    【面试题】sychronized
    java解压缩
  • 原文地址:https://blog.csdn.net/lv_suri/article/details/127978501