javascript / intermediate
Snippet
Eigenschaften verstecken über das Enumerable-Flag
Durch das Setzen von enumerable auf false mittels Object.defineProperty wird eine Eigenschaft vor Iterationen (wie for...in oder Object.keys) versteckt, bleibt aber direkt zugänglich.
snippet.js
1
2
3
4
5
6
7
8
const user = { username: 'alice' };Object.defineProperty(user, 'id', {value: 101,enumerable: false});console.log(Object.keys(user)); // ['username']console.log(user.id); // 101
Erklärung
1
enumerable: false
Verhindert, dass die Eigenschaft in Schleifen oder bei der Serialisierung erscheint.