属性的枚举、修改、删除

属性的枚举、修改、删除

先来看下属性吧

<script>
    const student = {
        name:'一只屁橘',
        age:18
    }

    const pro = Object.getOwnPropertyDescriptor(student,'name')
    console.log(pro);

</script>

configurable嘘在这里插入图片描述***

  • 小结:configurable: 意思是是否可以删除这个属性
    enumerable:意思是是否枚举,遍历
    writable:意思是是否修改编辑

现在我们来添加一个属性

<script>
    const student = {
        name:'一只屁橘',
        age:18
    }

    // const pro = Object.getOwnPropertyDescriptor(student,'name')
    // console.log(pro);

    Object.defineProperty(student,'sex',{
        configurable:true,
        enumerable:true,
        value:'男',
        writable:true
    })
    console.log(student);


</script>

在这里插入图片描述

此时,打印student对象,添加了一个sex属性

现在来验证 configurable 这个属性

在这里插入图片描述
现在 configurable 为true 时,我们可以用delete删除sex属性,删除成功
现在我们把configurable改为false,我们再来验证是否可以删除

<script>
    const student = {
        name:'一只屁橘',
        age:18
    }

    // const pro = Object.getOwnPropertyDescriptor(student,'name')
    // console.log(pro);

    Object.defineProperty(student,'sex',{
        configurable:false,
        enumerable:true,
        value:'男',
        writable:true
    })
    // console.log(student);

    delete student.sex
    console.log(student);


</script>

在这里插入图片描述
此时 sex这个属性依旧还在,验证了 configurable 这个属性是否可以删除

现在我们来验证 enumerable 这个属性 是否可以枚举遍历
<script>
    const student = {
        name:'一只屁橘',
        age:18
    }

    // const pro = Object.getOwnPropertyDescriptor(student,'name')
    // console.log(pro);

    Object.defineProperty(student,'sex',{
        configurable:true,
        enumerable:true,
        value:'男',
        writable:true
    })

    // delete student.sex


    for(let a in student){
        console.log(a);
    }



</script>

在这里插入图片描述

  • 当我们enumerable为true时,可以遍历出name、age、sex三个属性
现在我们把enumerable改为false
<script>
    const student = {
        name:'一只屁橘',
        age:18
    }

    // const pro = Object.getOwnPropertyDescriptor(student,'name')
    // console.log(pro);

    Object.defineProperty(student,'sex',{
        configurable:true,
        enumerable:false,
        value:'男',
        writable:true
    })

    // delete student.sex


    for(let a in student){
        console.log(a);
    }



</script>

在这里插入图片描述

  • 此时只能遍历出name、age两个属性
  • 所以验证了enumerable属性是否可以枚举遍历

接下来验证writable 属性

<script>
    const student = {
        name:'一只屁橘',
        age:18
    }

    // const pro = Object.getOwnPropertyDescriptor(student,'name')
    // console.log(pro);

    Object.defineProperty(student,'sex',{
        configurable:true,
        enumerable:false,
        value:'男',
        writable:true
    })

    student.sex = '女'
    console.log(student);

    



</script>

在这里插入图片描述

  • 此时性别已经改了
  • 现在我们把writable改为false
<script>
    const student = {
        name:'一只屁橘',
        age:18
    }

    // const pro = Object.getOwnPropertyDescriptor(student,'name')
    // console.log(pro);

    Object.defineProperty(student,'sex',{
        configurable:true,
        enumerable:false,
        value:'男',
        writable:false
    })

    student.sex = '女'
    console.log(student);

    



</script>

在这里插入图片描述

  • 但是打印结果依旧是男,验证writable属性如果是false的话,是不能修改该属性的。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值