origin.js
1.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
export default {
data() {
return {
originData: {},
originProps: {},
};
},
created() {
const { originData, originProps, ...other } = this._data;
this.originData = this.cloneDeep(other);
this.originProps = this.cloneDeep(this._props);
},
methods: {
// 深克隆对象
cloneDeep(obj) {
if (typeof obj !== 'object') {
return obj;
}
if (!obj) {
return obj;
}
if (obj instanceof Date) {
return new Date(obj);
}
if (obj instanceof RegExp) {
return new RegExp(obj);
}
if (obj instanceof Function) {
return obj;
}
let newObj;
if (obj instanceof Array) {
newObj = [];
for (let i = 0, len = obj.length; i < len; i++) {
newObj.push(this.cloneDeep(obj[i]));
}
return newObj;
}
newObj = {};
for (let key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) {
if (typeof obj[key] !== 'object') {
newObj[key] = obj[key];
} else {
newObj[key] = this.cloneDeep(obj[key]);
}
}
}
return newObj;
},
// 获取初始值
getOriginData(key) {
if (key) {
return this.cloneDeep(this.originData)[key];
}
return this.cloneDeep(this.originData);
},
},
};