added deepFreeze
This commit is contained in:
parent
35862f8a69
commit
f84a4bb406
31
coretool.js
31
coretool.js
@ -10,6 +10,37 @@ module.exports = {
|
|||||||
|
|
||||||
sleep: (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms)),
|
sleep: (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms)),
|
||||||
|
|
||||||
|
deepFreeze (obj) {
|
||||||
|
if (typeof obj !== 'object' || obj === null) {
|
||||||
|
return obj
|
||||||
|
}
|
||||||
|
Object.freeze(obj)
|
||||||
|
const propNames = Object.getOwnPropertyNames(obj)
|
||||||
|
propNames.forEach(prop => {
|
||||||
|
const propValue = obj[prop]
|
||||||
|
// for nested object
|
||||||
|
if (
|
||||||
|
propValue && typeof propValue === 'object' &&
|
||||||
|
!Object.isFrozen(propValue)
|
||||||
|
) {
|
||||||
|
deepFreeze(propValue)
|
||||||
|
}
|
||||||
|
// for nested array
|
||||||
|
if (Array.isArray(propValue)) {
|
||||||
|
propValue.forEach(item => {
|
||||||
|
if (
|
||||||
|
item && typeof item === 'object' &&
|
||||||
|
!Object.isFrozen(item)
|
||||||
|
) {
|
||||||
|
deepFreeze(item)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Object.freeze(propValue) // Freeze the array itself
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return obj
|
||||||
|
},
|
||||||
|
|
||||||
parse_json_anyway (value) {
|
parse_json_anyway (value) {
|
||||||
try {
|
try {
|
||||||
return JSON.parse(value)
|
return JSON.parse(value)
|
||||||
|
Loading…
Reference in New Issue
Block a user