Seguendo la mia precedente domanda: codice semplice Javascript per comprendere le basi OOP basate su prototipo Diciamo che eseguiamo in console questi due oggetti separati (anche se sono chiamati figlio e padre non c'è alcuna eredità tra loro):
var parent = {
name: "parent",
print: function(){
console.log("Hello, "+this.name);
}
};
var child = {
name: "child",
print: function(){
console.log("Hi, "+this.name);
}
};
parent.print()
// This will print: Hello, parent
child.print()
// This will print: Hi, child
temp =parent;
parent = child;
child = temp;
parent.print()
// This will now print: Hi, child
child.print()
// This will now print: Hello, parent
Ora supponiamo che genitore sia una libreria, come un'applicazione HTML5 in un browser questo non può fare molto male perché è praticamente in esecuzione in modalità sandbox, ma ora con l'avvento di ChromeOS, FirefoxOS e altri sistemi operativi [Browser] saranno anche collegati ad un'API nativa, sarebbe una testa fuori dalla "sandbox". Ora, se qualcuno cambia lo spazio dei nomi, sarebbe più difficile per un revisore di codice (automatizzato o meno) individuare un uso errato se cambia lo spazio dei nomi.
La mia domanda sarebbe: ci sono molti modi in cui la situazione di cui sopra può essere fatto e cosa si può fare per proteggere questo spazio dei nomi? (Sia nella javascript stessa che con uno strumento di analisi del codice statico)