Questo esempio crea un oggetto, lo congela e quindi crea un nuovo oggetto dall'oggetto congelato. Se il secondo oggetto tenta di modificare la proprietà test, non può. Resta congelato con il valore del primo oggetto di 10.Creazione di nuovi oggetti da oggetti padre congelati
//Create an object and freeze it
var first = {
test: 10
};
Object.freeze(first);
//Create a second object from the first one and
//try and change the new test property (you can't)
var second = Object.create(first);
second.test = 20;
console.log(second.test); //10
Ecco le mie domande:
E` second.test
una nuova proprietà in un nuovo oggetto, o è solo un riferimento alla proprietà nel congelato primo oggetto?
È possibile utilizzare il valore congelato first.test
come valore predefinito, ma lasciare che sia second.test
sovrascriverlo se necessario?
La ragione per cui chiedo è perché voglio rendere immutabile un oggetto base come modello con valori predefiniti e quindi usarlo per creare nuovi oggetti che posso personalizzare. Qual è l'approccio migliore per questo?
Grazie!
Pretty case case, ma si noti che questo non funziona se l'oggetto congelato contiene riferimenti ad altri oggetti congelati e si tenta di sovrascrivere _their_ properties. Ancora una tecnica piuttosto utile per semplici strutture di dati, solo a nessuno viene l'idea che sia un modo infallibile per creare immutabili. – Dtipson