defindeproperty

发布时间 2023-03-24 14:23:02作者: 外行的小白
// // vue2
// var obj = {};
// //defineProperty有三个参数,不写全会报错
// Object.defineProperty(obj, 'name', {
// get() {
// console.log('取值了');
// // 必须返回 _属性名
// return _name;
// },

// set(value) {
// // 必须写 _属性名=value
// _name = value;
// console.log('赋值了:' + value);
// },
// });

// // obj.name = '123131';
// console.log(obj.name);

// vue3
var data = { a: 2 };

var dataProxy = new Proxy(data, {
get(obj, prop) {
return obj[prop];
console.log('调用了', obj, prop);
},

set(obj, prop, value) {
obj[prop] = value;
console.log('赋值了', obj, prop, value);
},
});

dataProxy.name = 'jack';
// dataProxy.age = '12';
console.log(dataProxy.name, dataProxy);
// console.log(dataProxy.age);

// getter setter
// const obj = {
// get name() {
// console.log('取值');
// return _name;
// },
// set name(name) {
// console.log('赋值');
// _name = name;
// },
// };
// obj.name = 1234;
// console.log(obj.name);