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以下的原因
存取器描述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以下的原因
相关文章推荐
- JS面向对象定义多个属性--object.defineProperties()方法
- 原生js 对象属性监听,对象重写,defineProperty getter setter
- Object.defineProperty 监听对象属性变化
- js属性对象的hasOwnProperty方法
- js中Object.defineProperties 定义一个在原对象可读可写的方法
- 使用Object.defineProperty重新定义属性时需要注意的一点
- vue源码学习之Object.defineProperty对象属性监听
- js利用对象的defineProperty来进行变量的监控
- js属性对象的propertyIsEnumerable方法
- js玩具——UI组件:PropertyChangeEvent 属性改变事件对象
- js对象的继承以及公有私有属性的定义和读写
- 详谈js使用in和hasOwnProperty获取对象属性的区别
- Object.defineProperty()定义对象方法
- 使用defineProperty定义属性的构造函数在调试过程中打印的一些小细节
- 在js对象中定义属性和方法的实例。
- 浅谈js使用in和hasOwnProperty获取对象属性的区别
- 利用__define_setter__和 __define_getter__ 定义动态的对象属性
- JS技术(4)---定义对象,添加函数,改变对象属性
- JS中isPrototypeOf 和hasOwnProperty 的区别 ------- js使用in和hasOwnProperty获取对象属性的区别
- 页面包含js的不同位置报错 SCRIPT5007: 无法获取属性“x”的值: 对象为 null 或未定义