JS 对象属性特征

一、获取对象属性特征:

首先我们先定义一个对象作为演示。

let obj = {
        name: "Joker",
        age: 20,
        gender: "Male"
    }

1.通过Object.getOwnPropertyDescriptor(对象名,"对象属性名"),即可获取到对象的某个属性特征。

    console.log(Object.getOwnPropertyDescriptor(obj, "name"));
    console.log(Object.getOwnPropertyDescriptor(obj, "age"));
    console.log(Object.getOwnPropertyDescriptor(obj, "gender"));

2.通过Object.getOwnPropertyDescriptors(对象名),即可获取到对象的所有属性特征。

  console.log(Object.getOwnPropertyDescriptors(obj))

二、灵活控制对象属性的特征:

首先我们先定义一个对象作为演示。

let obj = {
        name: "Joker",
        age: 20,
        gender: "Male"
    };

1.新增对象属性:

Object.defineProperty(obj, "newName", {
        value: 'newJoker', //属性值
        writable: false  //属性值是否可以被修改
        enumerable: true  //属性是否可以被遍历
        configurable: true  //属性是否可以被删除 || 属性也不可以被重新配置
    });
    console.log(obj)

当然我们这里也可以使用 Object.defineProperties(对象名,{}) 一次新增多个属性。效果跟新增单个属性是一样的。

Object.defineProperties(obj, {
            newName: {
                value: 'newJoker',
                writable: false,
                enumerable: true,
                configurable: true
            },
            newAge: {
                value: 30,
                writable: false,
                enumerable: true,
                configurable: true
            }
        }
    );
    console.log(obj)

3.Object.preventExtensions(对象名):保护我们的指定对象,不能往对象中添加属性。

let obj = {
        name: "Joker",
        age: 20,
        gender: "Male"
    };
    Object.preventExtensions(obj);
    obj.newName = "newJoker";
    console.log(obj)

因此这里我们给对象新增了一个属性,是没有效果的。

4. 封闭对象API。是指将我们指定的对象封闭起来,不能往对象中添加属性、不能删除对象,且不能修改对象的特征

 let obj = {
        name: "Joker",
        age: 20,
        gender: "Male"
    };
    Object.seal(obj); 
    console.log(Object.isSealed(obj)); //true 查看该对象是否处于封闭状态

5.冻结对象API。冻结比封闭对对象属性控制更严格,冻结后只能读取数据,不能做一切的拓展。

 let obj = {
        name: "Joker",
        age: 20,
        gender: "Male"
    };
    Object.freeze(obj);
    console.log(Object.isFrozen(obj)); //true 查看该对象是否处于冻结状态

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值