Il tipo di stringa JavaScript è immutabile, ma significa che stringhe identiche condivideranno la memoria?
Diciamo che due stringhe sono create in luoghi completamente diversi, un motore JavaScript moderno dovrebbe essere abbastanza intelligente da non raddoppiare la quantità di memoria per ogni "copia" e solo riutilizzare quello già creato (che esiste da qualche parte nella memoria)?
Diciamo che abbiamo:
var foo = sha256(fooInput);
// ... somewhere else
var bar = sha256(barInput);
// Say foo and bar is identical: "foo === bar" => true
// Would they share memory?
Fa alcuna differenza se il valore della stringa è una chiave negli oggetti? Esempio:
var cars = {
"john": {
// information about all cars "john" owns.
}
};
var computers = {
"john": {
// information about all computers "john" owns.
}
};
var phones = {
"john": {
// information about all phones "john" owns.
}
};
La stringa "john" nell'esempio sopra occuperà la memoria di tre o una stringa di "john"?