背景: 记录自己的理解,自己又重新复习了Vue源码的理解,里面的数据劫持用到了Object.defineProperty(),所以记录一下
/*
Object.defineProperty()
为对象定义属性,
有两种方式,不能混合使用
数据描述符 value,writable
存取描述符 get,set
两者共有的属性: configrable和 enumberable
*/
// 数据描述符
var Person = {};
// value和writable ---> 数据描述符
Object.defineProperty(Person, 'name', {
value: 'lys',
writable: true // 默认是false, 代表是否可以修改
});
// 存取描述符
// configrable: false 不能删除当前的属性,且不能重新配置当前属性的描述符
var Person = {}
var t = null
Object.defineProperty(Person, 'name', {
configrable: true, // 可以删除当前的属性
enumerable: true, // 可以遍历到当前key
get () {
return t
},
set (newVal) {
temp = newVal;
}
})