本文主要是介绍Object.defineProperty(js的问题),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
定义
Object.defineProperty(obj, prop, descriptor)/*
obj:需要定义属性的对象
prop:需要定义的属性
descriptor:属性的描述描述符
返回值:返回此对象
*/
var obj = {}// 数据描述符
var descriptor = {// 能否delete删除,configurable: false,// 是否可写,默认false, 不能被赋值,只读writable: false,// 是否可枚举,即是否可以for...in访问属性,默认falseenumerable: false,// 属性值,默认undefinedvalue: 'hello',// 访问器描述符,不能与数据描述符同时使用// get: 读取,默认undefined// set: 设置,默认undefined
}Object.defineProperty(obj, 'name', descriptor)
console.log(obj.name)
示例:数据响应式 vue
function defineReactive(obj, key, val) {// val,由于闭包的存在,不会被销毁Object.defineProperty(obj, key, {get() {console.log('get');return val;},set(newVal) {if (newVal != val) {console.log('set');val = newVal;}},});
}var obj = {};
defineReactive(obj, 'foo', '123')
console.log(obj.foo); // get 123obj.foo = '223' // set
console.log(obj.foo); // get 223
这篇关于Object.defineProperty(js的问题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!