tilbage til lektionen

Tilføj toString til ordbogen

vigtighed: 5

Der er et objekt dictionary, oprettet som Object.create(null), til at gemme enhver key/value par.

Tilføj metoden dictionary.toString() til det, som skal returnere en komma-separeret liste af nøgler. Din toString bør ikke vises i for..in over objektet.

Den bør virke sådan her:

let dictionary = Object.create(null);

// din kode til at tilføje dictionary.toString metoden

// tilføj nogle data
dictionary.apple = "æble";
dictionary.__proto__ = "test"; // __proto__ is a regular property key here

// Kun apple og __proto__ er i loopet
for(let key in dictionary) {
  alert(key); // "apple" og "__proto__"
}

// din toString i aktion
alert(dictionary); // "apple,__proto__"

Metoden kan tage alle enumerable (tælbare) nøgler ved hjælp af Object.keys og outputte deres liste.

For at gøre toString non-enumerable, lad os definere den ved hjælp af en egenskabsbeskrivelse. Syntaksen for Object.create giver os mulighed for at give et objekt med egenskabsbeskrivelser som anden argument.

let dictionary = Object.create(null, {
  toString: { // definer egenskaben toString
    value() { // value er en funktion
      return Object.keys(this).join();
    }
  }
});

dictionary.apple = "Æble";
dictionary.__proto__ = "test";

// Kun apple og __proto__ er i loopet
for(let key in dictionary) {
  alert(key); // "apple" og "__proto__"
}

// kommasepareret liste af egenskaber fra toString
alert(dictionary); // "apple,__proto__"

Når vi opretter en egenskab ved hjælp af en egenskabsbeskrivelser, er dens flag som standard sat til false. Så i koden ovenfor er dictionary.toString non-enumerable.

Se kapitlet Flag og beskrivelser for objektegenskaber for en gennemgang.