封装一个函数来缓存object或者数组上一次修改的数据
时间: 2024-05-15 16:16:39 浏览: 17
以下是一个缓存object上一次修改的数据的函数:
```javascript
function cacheObjectChanges(obj) {
let cache = JSON.parse(JSON.stringify(obj));
return function() {
const changes = {};
for (let key in obj) {
if (obj[key] !== cache[key]) {
changes[key] = {
oldValue: cache[key],
newValue: obj[key]
};
cache[key] = obj[key];
}
}
return changes;
}
}
```
使用示例:
```javascript
const user = {
name: 'John',
age: 30,
email: 'john@example.com'
};
const getChanges = cacheObjectChanges(user);
user.age = 31;
user.email = 'john.doe@example.com';
const changes = getChanges();
console.log(changes);
// Output: { age: { oldValue: 30, newValue: 31 }, email: { oldValue: 'john@example.com', newValue: 'john.doe@example.com' } }
```
这个函数返回一个函数,这个函数在调用时会返回一个包含修改的数据的对象。该对象的键是被修改的属性名称,值是一个对象,包含旧值和新值。