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);