/*CREER UN OBJET (en fin de compte un objet destine
uniquement a etre un prototype d'instances)
AVEC UNE FONCTION: "constructor"*/
var Birds = function(beak, voice, feet) {
this.beak = beak;
this.voice = voice;
this.feet = feet;
this.getFeet = function() {return this.feet;};
};
/*CREER UNE INSTANCE DE L'OBJET prototypal
EN SPECIFIANT DES valeurs aux PROPRIETES dont le nom
est herite de l'objet prototypal*/
var Parrots = new Birds("hooked", "pan", "climbers");
var Crow = new Birds();//ce corbeau n'a rien de propre
/*LES PROPRIETES DEFINIE DANS LA FONCTION
NE SONT PAS CELLE DE LA FONCTION bien qu' ELLE LES
FABRIQUE, ce sont les proprietes de l'objet prototypal*/
console.log("Birds est egal a ", Birds);
//[Function]
console.log("L'objet prototypal et le prototype des instances ",
Birds.prototype.feet, Crow.prototype);
console.log("Crow est egal a ", Crow);
//{ beak: undefined, voice: undefined, feet: undefined }
console.log("Parrots est egal a", Parrots);
//{ beak: 'hooked', voice: 'pan', feet: 'climbers' }
//LES INSTANCES CONSTRUITES PAR LA FONCTION SON DES OBJETS
console.log("Parrots est de type ", typeof Parrots);
/*UNE DEUXIEME MANIERE DE CONSTRUIRE UN SOUS-OBJET
Ici on a Bird.prototype, puis Parrot, puis Jacot par
ordre de typalite*/
var Jacot = Object.create(Parrots);
Jacot.color = "gray";
Jacot.voice = "mimic";
console.log("la couleur du Jacot ", Jacot.color);
console.log("la voix du Jacot ", Jacot.voice);
/*ON PEUT UTILISER POUR LE JACOT LES PROPRIETES
QU'IL A HERITE DE SES ANCETRES*/
console.log("bec de Jacot", Jacot.beak);
//-->bec de Jacot hooked
//LA LISTE DES NOMS DE PROPRIETES
console.log("Jacot est egal a ", Object.keys(Jacot));
//-->[ 'color', 'voice' ]
console.log("Has Parrots the own property called beak? ",
Parrots.hasOwnProperty("beak"), '\n');
//-->Has Parrots the own property called beak? true
//COMME MENTIONNE LES PROPRIETES DEFINIES
//DANS LA FONCTION BIRDS NE SONT PAS A BIRDS PROPRES MAIS
//A SON OBJET PROTOTYPAL
console.log("Has Birds the own property called beak? ",
Birds.hasOwnProperty("beak"), '\n');
//-->Has Birds the own property called beak? false
console.log("Has Crow the own property called beak? ",
Crow.hasOwnProperty("beak"), '\n');
//-->Has Crow the own property called beak? true
console.log("The Birds object is prototype of Parrots ?",
Birds.isPrototypeOf("Parrots"), '\n');
console.log("The inherited properties of Crow",
Object.getPrototypeOf(Crow), '\n');
console.log("own property names of Crow ", Object.getOwnPropertyNames(Crow));
console.log("Parrots color is ", Parrots['color'],
"and Jacot color is ", Jacot['color']);
/*
crochu, casserole, grimpeurs, gris, imitateur, bec, voix, pieds,
hooked, pan, climbers, gray, mimic, beak, voice, feet,
*/
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.