JSFiddle - React, Tailwind, and code Playground
JavaScript
var huhn = {};
// Die Anzahl der Eier soll veränderbar und in for-in-Schleifen sichtbar, aber nicht löschbar sein
// "configurable" fehlt hier, ist also wie standardmäßig false
Object.defineProperty(huhn, 'eier', {
writable: true,
enumerable: true,
value: 42
});
delete huhn.eier; // Klappt nicht
huhn.eier++; // Klappt!
for(var x in huhn){ } // Listet "eier" auf
// Das Alter unseres Huhns ist ein Geheimnis und wird daher vor for-in-Schleifen versteckt
// Wir könnten "enumerable" auch einfach weglassen - der Standardwert ist ja false
Object.defineProperty(huhn, 'alter', {
writable: true, // Sieht ja keiner, kann also verändert werden
configurable: true, // Sieht ja keiner, kann also verändert werden
enumerable: false,
value: 3
});
huhn.alter++; // Klappt!
for(var x in huhn){ } // Listet "alter" NICHT auf
delete huhn.alter; // Klappt!
// Der Name unseres Huhns soll komplett unveränderbar sein
// Weil alles standardmäßig false ist, müssen wir außer "value" nichts angeben
Object.defineProperty(huhn, 'name', {
value: 'August'
});
huhn.name = 'Ralf'; // Klappt nicht
// Überprüfen wir das Huhn!
// huhn.eier müsste 43 sein
// huhn.alter müsste nicht auftauchen
// huhn.name müsste in der Schleife nicht auftauchen, aber 'August' sein
for(var x in huhn){
console.log(huhn[x]);
}
console.log(huhn.name);