为了账号安全,请及时绑定邮箱和手机立即绑定

初步认识JavaScript对象属性的特性

标签:
JavaScript

对象的属性可分为:1、数据属性;2、存取器属性;
数据属性有以下特性:1、值(value),2、可写(writable),3、可枚举(enumerable),4、可配置(configurable)
存取器属性有以下特性:1、读取(get),2、写入(set),3、可枚举(enumerable),4、可配置(configurable)
通过Object.getOwnPropertyDescriptor()获取对象的属性的特性描述符,第一个参数是对象,第二个参数是属性,
通过Objec.defineProperty()设置属性的特性,第一个参数是该对象,第二个参数是属性,第三个参数是属性描述符对象
Object.defineProperty()要么修改属性的特性,要么创建一个属性,在属性描述符中不必须全部传入的属性的特性,没有传入的特性默认为false或undefined
通过for/in枚举属性,
第三个参数属性描述符对象不必须传入四个参数,没有传入的特性默认为false或undefined

        var obj={
            "y":-1,
            "m":"zhang"
        };
        //添加一个属性x,值为1,可配置,不可枚举,不可写
        Object.defineProperty(obj,"x",{
            configurable:true,
            enumerable:false,
            value:1
        })
        obj.x=0;
        obj.x;  //返回1,writable没有描述,默认为false
        Object.defineProperty(obj,"x",{
            value:0
        });
        obj.x;   //返回0,有于fonfigurable为true,可配置,
        obj.propertyIsEnumerable("x"); //返回false,属性是自身属性且可枚举的吗?不可枚举
        var arr=[];
        for (attrs in obj){
            arr.push(attrs);
        }
        arr.length; //仅枚举到属性y,x不可枚举
        console.log(Object.getOwnPropertyDescriptor(obj,"x"));//获取obj对象中x属性的特性描述符
        console.log(Object.getOwnPropertyDescriptor(obj,"y"));//普通创建的属性的特性:可写,可枚举,可配置。
        //Object.defineProperties()可以同时设置或创建多个属性,第一个参数是对象,第二个参数是一个对象映射表
        Object.defineProperties(obj,{
            z:{value:-2,writable:false,enumerable:false,configurable:false},
            e:{value:-3,numerable:true},
            m:{value:"yang"},
            f:{value:"yang",writable:true,enumerable:true,configurable:true}
        });
        obj.f="zhang";
        obj.f; //返回zhang
        obj.m;//返回yang
        Object.defineProperty(obj,"e",{ //属性不可配置时,不可以修改属性的可枚举性
            //writable:false,
            //numerable:true
            value:5
            //numerable:true
        });
        obj.e=3;
        alert(obj.e);
        //alert(obj.propertyIsEnumerable("e"));
点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消