Object.defineProperty()方法的解释及使用
2020-08-15 09:48
1156 查看
- 什么是Object.defineProperty()?
Object.defineProperty()方法会直接在一个对象上定义一个新属性,或修改一个对象的现有属性,并返回对象。
注意:应当直接在 Object 构造器对象上调用此方法,而不是在任意一个 Object 类型的实例上调用。
var object = {}; Object.defineProperty(object,'name',{ value:'lh', writable:false }); Object.name = 'zs'; console.log(object.name);//结果还为lh
- Object.defineProperty()的内置参数有哪些?
Object.defineProperty(obj, prop, descriptor)
obj:要定义属性的对象。
prop:要定义或修改的属性的名称或 Symbol 。
descriptor:要定义或修改的属性描述符。
返回值是传递给参数的对象
- 有哪些可选键值?
该方法允许精确地添加或修改对象的属性。通过赋值操作添加的普通属性是可枚举的,在枚举对象属性时会被枚举到(for…in 或 Object.keys 方法),可以改变这些属性的值,也可以删除这些属性。
configurable
当且仅当该属性的 configurable 键值为 true 时,该属性的描述符才能够被改变,同时该属性也能从对应的对象上被删除。
默认为 false。
enumerable
当且仅当该属性的 enumerable 键值为 true 时,该属性才会出现在对象的枚举属性中。
默认为 false。
数据描述符还具有以下可选键值:
value
该属性对应的值。可以是任何有效的 JavaScript 值(数值,对象,函数等)。
默认为 undefined。
writable
当且仅当该属性的 writable 键值为 true 时,属性的值,也就是上面的 value,才能被赋值运算符改变。
默认为 false。
- 创建属性
如果对象中不存在指定的属性,Object.defineProperty() 会创建这个属性。当描述符中省略某些字段时,这些字段将使用它们的默认值。
var object = {}; // 创建一个新对象 // 在对象中添加一个属性与数据描述符的示例 Object.defineProperty(object, "a", { value : 37, writable : true, enumerable : true, configurable : true }); // 对象 object 拥有了属性 a,值为 37 // 在对象中添加一个设置了存取描述符属性的示例 var bValue = 38; Object.defineProperty(object, "b", { // 使用了方法名称缩写(ES2015 特性) // 下面两个缩写等价于: // get : function() { return bValue; }, // set : function(newValue) { bValue = newValue; }, get() { return bValue; }, set(newValue) { bValue = newValue; }, enumerable : true, configurable : true }); object.b; // 38 // 对象 object 拥有了属性 b,值为 38 // 现在,除非重新定义 object.b,object.b 的值总是与 bValue 相同 // 数据描述符和存取描述符不能混合使用 Object.defineProperty(object, "conflict", { value: 0x9f91102, get() { return 0xdeadbeef; } });
相关文章推荐
- JavaScript使用Object.defineProperty方法实现双数据绑定
- 关于js的Object.defineProperty方法的使用
- includes方法 使用 Object.defineProperty 扩展 ,解决不兼容问题
- 使用Object.defineProperty重新定义属性时需要注意的一点
- 面试题:(考察Object.defineProperty(obj,prop,descriptor) 的get方法)
- js Object.defineProperty方法(vue源码解析)
- ECMA5中的Object.defineProperty()方法
- 强大的JS方法Object.defineProperty详解及VUE.JS双向绑定原理
- JS进阶篇--JS apply的巧妙用法以及扩展到Object.defineProperty的使用
- Object.defineProperty方法
- Object.defineProperty()方法学习笔记
- ES6新特性---对象扩展方法Object.assign、Object.is、Proxy与Object.defineProperty
- JS中的双向数据绑定及Object.defineProperty方法
- js中的Object.defineProperty方法
- JavaScript Object.defineProperty()方法详解
- Object.defineProperty()的set方法除了用于双向绑定还能干嘛?
- Object.defineProperty(obj,prop,descriptor)使用
- ES5 Object.defineProperties / Object.defineProperty 的使用
- 使用Object.defineProperty实现简单的js双向绑定
- JS中的双向数据绑定及Object.defineProperty方法