/*Eloquent JS object (ligne 25) snippet 11 Definir les
proprietes des proprietes d'un object, comme
l'enumerabilite et autres, ce qu'on ajoute sans precision speciale
n'importe ou sera enumerable avec transmission a la descendance
de cette enumerabilite.
Reprenons le snippet 10 dans un premier temps,
juste un peu allege d'annotations et de lignes de code
non necessaires a present.*/
map = {};
/*la fonction storePhi gave l'object map de ses
couples d'arguments pour en faire
des proprietes.*/
function storePhi(event, phi) {
map[event] = phi;
}
storePhi("pizza", 0.069);
storePhi("touched tree", -0.081);
/*l'objet ancestral "Object.prototype" va aussi etre fourre
d'un nom de propriete. Ce nom serait celui
d'une propriete enumerable qui serait attrapee
par la boucle for si nous la fourrions sans precaution
Venons en au coeur du sujet
UTILISONS LA METHODE Objec.defineProperty()
pour fourrer l'objet ancestral precautionneusement.*/
Object.defineProperty(Object.prototype,
"hiddenNonsense",
{enumerable: false, value: "hi"});
for (name in map)
console.log(name);
/*-->pizza
touched tree*/
console.log("\n\n", map.hiddenNonsense, "hiddenNonsense" in map);
//--> hi (j'ai saute 2 lignes sur la console.)
/*On voit que n'etant pas enumerable, hiddenNonsense
n'est pas attrappe par la boucle for. Mais si on demande s'il
est parmi les proprietes de map on obtient 'vrai'*/
Be the first to comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.