Web前端必做笔记之一:JavaScript中对象属性的描述,可枚举,可配置,可重写

Web前端必做笔记之一:JavaScript中对象属性的描述,可枚举,可配置,可重写

      <script>
              //可枚举,不可枚举

              const student = {
                     name:"小明",
                     age:12,
                     [Symbol("level")]:"优秀",
                     [Symbol("level")]:"有钱",
              }
               
        const val  =  Object.getOwnPropertyDescriptor(student,"name");
        console.log(val);
            /*
            {
                  configurable: true  //属性是否可以删除
                  enumerable: true    //属性是否可枚举, 可枚举:比如说for...in循环,true,可枚举的就能够遍历到,false,不可枚举就遍历不到
                  value: "小明"       //属性值
                  writable: true      //属性是否可以修改
            }
            */

            Object.defineProperty(student,"gender",{   //这个方法第一个参数是对象,第二个是属性

                  configurable: true,  //属性是否可以删除
                  enumerable: true,    //属性是否可枚举,
                  value: "男",       //属性值
                  writable: true      //属性是否可以修改

            })

            console.log(student);  //会发现多了个"gender"属性
            //如果要删除这个属性那怎么办?
            delete student.gender;
   </script>       
<script>
//当我们把这个configurable改成false
            Object.defineProperty(student,"gender",{   

                  configurable: false,  //属性是否可以删除
                  enumerable: true,    //属性是否可枚举,
                  value: "男",       //属性值
                  writable: true      //属性是否可以修改

                  })
                  delete student.gender;
                  console.log(student);   //就会发现“gender”没有删掉
   </script>               
<script>
 Object.defineProperty(student,"gender",{   

                        configurable: false,  //属性是否可以删除
                        enumerable: true,    //属性是否可枚举,
                        value: "男",       //属性值
                        writable: true      //属性是否可以修改

                        }) 
                    student.gender = "女"
                    console.log(student);  //会发现小明变成"女"  ,writable改成false,就修改不了。  
                    
                    
                 for(let pro in student){
                       console.log(pro);   //会打印出name, age,gender;当我们把enumerable:false,变成了不可枚举属性,就会发现gender没了。
                 }   
                 //也就是说,for...in循环找不到不可枚举的数据
   </script>              

总结:
1. configurable: false, //属性是否可以删除
enumerable: true, //属性是否可枚举,
value: “男”, //属性值
writable: true //属性是否可以修改
2.for…in循环,true,可枚举的就能够遍历到,false,不可枚举就遍历不到

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值