CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Qu'est-ce qu'un prototype ?

youthguy
youthguy
Niveau 9
05 octobre 2018 à 22:24:33

Bonjour
J'ai vu ça en Javascript mais je sais pas trop ce que c'est
Et pourquoi y'aurais des objets mais pas de classes en JS ?
Par exemple
Number.toString() (j'invente)
Number c'est quoi ? un objet ou une classe ?
et si toString c'est un prototype, ça veut dire que un prototype est une méthode prédéfinie par le langage ?
je comprends pas

thelastofus2
thelastofus2
Niveau 32
06 octobre 2018 à 14:03:03

Un prototype c'est l'entête d'une fonction, par exemple :
private int f(string s){ print("ca va?"); }
le prototype est private int f(string s)
Dans ton exemple, Number est un objet, donc une classe. En gros objet = classe. Et Number.toString() c'est un appel de fonction de la classe Number.
Et dans ce cas, Number est une classe static, parce que tu appelles une fonction de cette classe sans initialiser une variable Number.

EDIT : Pour Number, en fait ca serait une classe plutôt, et juste une classe. Par contre une instance de Number, comme Number n = new Number() , ici n est un objet (et pas une classe), donc objet != classe, je me suis gouré

Message édité le 06 octobre 2018 à 14:06:30 par thelastofus2
blackapplex
blackapplex
Niveau 10
06 octobre 2018 à 16:22:59

Ouais objet=instance d'une classe, m'enfin c'est pas un terme très clair.
Pour @thelastofus2, quand tu fais Number.toString(), sauf erreur de ma part tu sais juste que toString() est une méthode statique de la classe Number.
Par contre Number peut être une classe statique ou non. Si tu peux faire "Number n = new Number()", alors Number n'est pas une classe statique,c 'est juste une classe qui possède des méthodes statiques.

thelastofus2
thelastofus2
Niveau 32
07 octobre 2018 à 05:07:32

Le 06 octobre 2018 à 16:22:59 blackapplex a écrit :
Ouais objet=instance d'une classe, m'enfin c'est pas un terme très clair.
Pour @thelastofus2, quand tu fais Number.toString(), sauf erreur de ma part tu sais juste que toString() est une méthode statique de la classe Number.
Par contre Number peut être une classe statique ou non. Si tu peux faire "Number n = new Number()", alors Number n'est pas une classe statique,c 'est juste une classe qui possède des méthodes statiques.

Ah d'accord my bad

dark_drow
dark_drow
Niveau 15
07 octobre 2018 à 09:53:03

Je pense que l'op parle de prototype en Javascript qui est un concept un peu similaire aux classes. Tout objet (Date, String) hérite de Object.prototype.
La chaîne de prototypage c'est le concept que chaque objet possède un set de méthode (classique quoi) plus un objet prototype.
Du coup si tu invoque maString.bla() l'interpréteur Javascript va chercher si une méthode bla() est disponible directement dans maString et s'il trouve pas, va chercher dans maString.prototype puis maString.prototype.prototype jusqu'à remonter la chaîne tout en haut. Si la méthode n'est pas trouvé ça plante.
Aussi, si tu veux rajouter des méthodes à la classe String, tu peux définir quelque part String.prototype.bla = function() {}
Après chaque nouveau objet de type string possédera la fonction bla()

C'est pas un sujet trivial le concept de prototype en JS... Je pense que ma définition est pas top ^^'

godrik
godrik
Niveau 30
07 octobre 2018 à 15:58:43

De ce que tu as l'air d'en dirr dark_drow, c'est exactement de l'heritage, non?

dark_drow
dark_drow
Niveau 15
07 octobre 2018 à 16:24:51

Exactement je sais pas trop, la flexibilité de JS fait qu'on peut s'en servir pour l'héritage, mais aussi pour "étendre" une classe

lisarael
lisarael
Niveau 13
07 octobre 2018 à 16:43:09

C'est pas tout à fait de l'héritage, mais ça en est fort proche, c'est juste une manière un peu différente d'en faire : https://fr.wikipedia.org/wiki/Programmation_orient%C3%A9e_prototype

Note : depuis ES2015, on peut définir des "classes" en Javacript, mais ça reste, au final, un simple sucre par-dessus une chaîne de prototype.

Les classes JavaScript ont été introduites avec ECMAScript 2015. Elles sont un « sucre syntaxique » par rapport à l'héritage prototypal. En effet, cette syntaxe n'introduit pas un nouveau modèle d'héritage dans JavaScript ! Elle fournit uniquement une syntaxe plus simple pour créer des objets et manipuler l'héritage.

(source : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Classes )

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware