• 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 会报错,告诉您不能重复修改特性。

     

        

  • 相关阅读:
    二、W5100S/W5500+RP2040树莓派Pico<DHCP>
    CGO 初步认知和基本数据类型转换
    AVProVideo☀️十、来给视频设置封面
    Java并发和多线程编程学习(一) 并发初探和底层原理
    python基础06——控制流语句:顺序、分支、循环
    蓝桥杯单片机快速开发笔记——定时器
    AcWing 898. 数字三角形
    07-python条件语句
    HTML 属性
    Qt开发Android环境配置
  • 原文地址:https://blog.csdn.net/lv_suri/article/details/127978501