Object.defineProperty()

95 阅读1分钟

Object.defineProperty()定义对象中新属性或修改原有的属性

Object.defineProperty(obj,prop,descriptor)

obj:必须,目标对象

prop:必须,需定义或修改的属性的名字(字符串格式)

descriptor:必须,目标属性所拥有的特性

Object.defineProperty()第三个参数descriptor说明:以对象形式{}书写

value:设置属性的值,默认为undefined

writable:值是否可以重写。true|false 默认为false

enumerable:目标属性是否可以被枚举。true|falsse默认为false,如果值为false则不允许遍历,默认是false

代码:


 var obj= {

            id:1,

            pname:'小米',

            price:1999

            };

           

            Object.defineProperty(obj,'address',{

                value:'中国山东蓝翔技校XX单元',

                enumerable:false,

                writable:false,

            });

            Object.keys(obj);

            console.log(Object.keys(obj));

enumerable添加之后,后续添加的address里面的value不会被枚举出来,因为Object.keys获取对象之后返回的是一个数组形式,那么这个address的值就不会在控制台中看见

configurable:目标属性是否可以被删除或是否可以在此修改特性true|false 默认为false,如果为false则为不能删除,同时也规定了不允许修改第三个参数中的特性