您的位置:首页 > Web前端 > JavaScript

js对象,defineProperty,对象定义属性

2018-02-23 17:34 405 查看
对象是由多个名/值对组成的无序的集合var obj = {test: 'hello'};1.对象的已有的属性添加特性描述Object.defineProperty(obj,'test',{//是否可以删除(是否可以delete删除)目标属性或是否可以再次修改属性的特性//(writable,configurable,enumerable)。ture可以,默认falseconfigurable:true|false,// 此属性是否可以被枚举(for in 或Object.keys());ture可以默认falseenumerable:true|false,value: '任意类型的值',writable:true|false //属性的值是否可以被重写,true可以,默认false});2.对象新添加的属性的特性描述Object.defineProperty(obj,'test',{//是否可以删除(是否可以delete删除)目标属性或是否可以再次修改属性的特性//(writable,configurable,enumerable)。ture可以,默认falseconfigurable:true|false,// 此属性是否可以被枚举(for in 或Object.keys());ture可以默认falseenumerable:true|false,value: '任意类型的值',writable:true|false //属性的值是否可以被重写,true可以,默认false});
存取器描述var obj = {};Object.defineProperty(obj,"newKey",{ get:function (){} | undefined, set:function (value){} | undefined configurable: true | false enumerable: true | false});注意:当使用了getter或setter方法,不允许使用writable和value这两个属性var obj = {};var initValue = 'hello';Object.defineProperty(obj,"newKey",{ get:function (){ //当获取值的时候触发的函数 return initValue; }, set:function (value){ //当设置值的时候触发的函数,设置的新值通过参数value拿到 initValue = value; }});//获取值console.log( obj.newKey ); //hello//设置值obj.newKey = 'change value';console.log( obj.newKey ); //change value
兼容性在ie8下只能在DOM对象上使用,尝试在原生的对象使用 Object.defineProperty()会报错。这也是vue不支持ie8以下的原因
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息