I have 2 questions here:-
-
Why
obj2 = 5;
is not throwing the error? -
If I wish to throw during assignment
obj2 = 5;
what should I do? Considering obj2 is var or let.
"use strict"
function deepFreeze(object) {
// Retrieve the property names defined on object
const propNames = Object.getOwnPropertyNames(object);
// Freeze properties before freezing self
for (const name of propNames) {
const value = object[name];
if (value && typeof value === "object") {
deepFreeze(value);
}
}
return Object.freeze(object);
}
let obj2 = {
internal: {
a: null
}
};
deepFreeze(obj2);
// obj2.internal.a = 'anotherValue'; // fails silently in non-strict mode
// obj2.internal.a; // null
obj2 = 5; // I want to throw error in this case but it is not throwing error.