Object.defineProperty(js的问题)
2024-01-08 03:17:57
定义
Object.defineProperty(obj, prop, descriptor)
/*
obj:需要定义属性的对象
prop:需要定义的属性
descriptor:属性的描述描述符
返回值:返回此对象
*/
var obj = {}
// 数据描述符
var descriptor = {
// 能否delete删除,
configurable: false,
// 是否可写,默认false, 不能被赋值,只读
writable: false,
// 是否可枚举,即是否可以for...in访问属性,默认false
enumerable: false,
// 属性值,默认undefined
value: '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 123
obj.foo = '223' // set
console.log(obj.foo); // get 223
文章来源:https://blog.csdn.net/dxn16638400024/article/details/135418733
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!