class Observer {
constructor(data) {
this.data = data;
this.walk(data);
}
walk(data) {
let value;
if (Object.prototype.toString.call(data) !== "[object Object]") return;
for (const key in data) {
if (data.hasOwnProperty(key)) {
value = data[key];
if (data[key] === "[object Object]") {
new Observer(data[key]);
};
this.convert(key, value);
}
}
}
convert(key, value) {
Object.defineProperty(this.data, key, {
enumerable: true,
configurable: true,
get: function () {
console.log(`${key},被访问。`)
return value
},
set: function (newValue) {
},
})
}
}
let data = {
user: {
name: 'naruto',
equipment: {
arms: 'kuwu',
ArmGuard: 'long',
}
},
time: '2048',
};
const app = new Observer(data);
原文:https://www.cnblogs.com/hideonbush/p/10710536.html