In this code, the prototype can still change.
How I can prevent changes to the prototype?
var a = {a:1}
var b={b:1}
var c = Object.create(a)
Object.getPrototypeOf(c) //a
c.__proto__ = b;
Object.getPrototypeOf(c) //b
var d = Object.create(null)
Object.getPrototypeOf(d) //null
d.__proto__ = b;
Object.getPrototypeOf(d) //null
How I can prevent changes to the prototype?
I assume you are not talking about mutating the prototype object itself, but overwriting the prototype of an existing object.
You can use Object.preventExtensions()
to prevent that:
var a = {a:1}
var b = {b:1}
var c = Object.create(a)
Object.preventExtensions(c)
console.log(Object.getPrototypeOf(c)) //a
c.__proto__ = b; // Error
But that also means you cannot add any new properties to it. You could also use Object.freeze()
or Object.seal()
depending on your needs, which restrict modifications to the object even more.
There are no other ways though.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With