Bonjour tout le monde.
Je me permets de vous poser une petite question.
Pourquoi ne peut on pas modifier le prototype d'un objet créé avec la fonction:
"Object.create"?
Merci d'avance.
Bonjour tout le monde.
Je me permets de vous poser une petite question.
Pourquoi ne peut on pas modifier le prototype d'un objet créé avec la fonction:
"Object.create"?
Merci d'avance.
modifier non, mais surcharger oui, comme pour tout les langages objets (dont Javascript fait partie).
mais surcharger un objet natif du JS, c'est pas une bonne idée, mieux vaut faire ta cuisine dans une classe différente héritant des objets qui t'intéressent.
Je suis d'accord au sujet de la surcharge. Mais je pense que je serai plus clair avec un exemple de code.
Pourquoi dans le code ci-dessous j'obtiens le message d'erreur "TypeError: voiture.prototype is undefined" en voulant rajoutant une propriété à mon objet?
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 <!doctype html> <html> <head> <title> Question constructeur </title> </head> <body> <script> var voiture = { roue:4, km:0, }; var clio = Object.create(voiture); clio.prototype.turbo = "bereta"; document.write("<br>Desormais ma clio a un turbo de marque :"+clio.turbo); </script> </body> </html>
Merci
jour
essai avec cette syntaxe
Code : Sélectionner tout - Visualiser dans une fenêtre à part Object.getPrototypeOf(clio).turbo = "bereta";
Bonjour melka one.
Je constate que ça fonctionne.
Au delà de cette excellente nouvelle peux tu m'éclairer un peu plus.
La méthode Object.create() crée un objet qui ne descendend pas de Object (voir ici : http://https://developer.mozilla.org...ject/prototype
Et s'il ne descend pas de Object alors il n'a pas de prototype.
Donc s'il n'a pas de prototype, comment getPrototypeOf() peut récupérer un prototype qui n'existe pas?
Je ne vois pas ou je me trompe? Peux tu m'aider à la compréhension?
Merci beaucoup.
Voir : https://developer.mozilla.org/en-US/...getPrototypeOf
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 let Voiture ={ roue: 4, km: 0, }; let clio = Object.create(Voiture); // écriture possible mais normalement on doit utiliser new clio.turbo = "bereta"; console.log(`Ma clio a un turbo de marque : ${ clio.turbo }`); console.log(clio.prototype); // undefined let protoClio = Object.getPrototypeOf(clio); protoClio.distance = ( vitesse=120, temps=1 ) => { return vitesse * temps; } console.log(`clio distance : ${ clio.distance() } km`);
l'utilisation du mot prototype marche pour la fonction constructeur d'un objet c'est le cas quand on utilise new, dans ton car on ne peut pas le faire car Object.create n'utilise pas de fonction constructeur pour cree une instance tu n'a qu'une référence a l'objet et dans ce cas on utilise getPrototypeOf ou __proto__
Merci à tous j'ai tout compris.
Melka one, ta réponse était parfaite et m'a parfaitement éclairé.
Un article intéressant sur le sujet: https://javascriptweblog.wordpress.c...pt-prototypes/
On peut aussi faire comme ça.
Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 var clio = Object.create(voiture); //clio.prototype.turbo = "bereta"; clio.constructor.prototype.turbo = "bereta";
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager