JS对象属性的四大特征

一.四大特征分别是:

  1. value
    value:值,//实际存储属性值
  2. writable
    writable:true,//控制值(value)是否可修改,默认是true可修改的
  3. enumerable
    enumerable:true,//控制是否可用for in遍历到默认是true,即使不能for in,用"."也能访问
  4. configurable
    //控制是否可以修改其他特性,是否可以删除属性,修改不可逆转默认是true;

二.访问和修改:
1.访问语法:

 Object.getOwnPropertyDescritor(obj,"属性名");

2.修改:

 Object.defineProperty(obj,"属性名",{
            特性名:特性值,
            特性名:特性值,
            ...
        })

三.举例说明:
eg:
1.同时修改属性的多个特征语法:

  Object.defineProperties(obj,{
    属性名:{
        特性名:特性值,
        ...
    },
    属性名:{
        特性名:特性值,
        ...
    },

  })
  var obj = {
            id : 1000,
            name : 'yong',
            age : 22
        }
       //获取id的特征
        var te = Object.getOwnPropertyDescriptor(obj,'id');
        console.dir(te);

        // 修改obj对象的id属性为只读
        Object.defineProperty(obj, "id",{
            writable:false
        });
        //批量修改
          Object.defineProperties(obj,{
            id:{
                writable:false,
                configurable:false
            },
            name:{
                configurable:false
            },
            age:{
                enumerable:false,
                configurable:false
            }
        });

五.扩展:
1.值得注意的是:防止在对象创建,修改对象的结构/内容,强调:必须启用严格模式才能报错!

2.严格模式语法:

"use strict";//启动严格模式验证四大特征
  1. 写在js代码的第一行【全局启动严格模式】,或者函数的第一行【函数内部启动严格模式】

4.严格模式的特点:
== 将静默错误提升为报错==

5.防扩展:禁止给对象添加任何新属性

Object.preventExtensions(obj);//禁止扩展

6.密封:seal 在防扩展的基础上,再禁止删除现有属性,即不能添加,又不能删除
相当于将所有属性的configurable特性都设置为false,删除不存在的不报错

 Object.seal(obj);//修改所有属性的configurable特性为false

7.冻结:禁止给对象做任何修改(包括结构和值)

Object.freeze(obj);//修改所有属性的writable特性为false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值