11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour

je crée un objet en faisant un[B] eval [/B]d'un string json

monobjet = eval(stringjson);


J'ai besoin ensuite d'écrire un certain nombre de fonctions qui vont permettre la manipulation de l'objet (modifier la valeur de certains de ses attributs etc...) en question, je me demandais si de telles fonctions pouvaient rattachées à l'objet en tant que methode par l'attribut prototype?

monobjet.prototype.delete = function ()
{

du code

}
Salut,
olk1free a écrit :
je me demandais si de telles fonctions pouvaient rattachées à l'objet en tant que methode par l'attribut prototype?

Non, il suffit de faire

monobjet.delete = function () {
  // du code
};
Je précise que l'attribut prototype sert à écrire des méthodes pour des classes et pas des instances de classes (donc pas des objets). En fait, prototype te permet de définir des methodes pour plusieurs objets d'un coup

ex
var Rectangle = function(larg, long) {...};
Rectangle.prototype.getPerimetre = function() {...};

var rec1 = new Rectangle(5,10);
var rec2 = new Rectangle(2,3);

alert(rec1.getPerimetre());
alert(rec2.getPerimetre());
MoOx a écrit :
Je précise que l'attribut prototype sert à écrire des méthodes pour des classes et pas des instances de classes (donc pas des objets).

En fait, pour être précis, la notion de classe n'existe pas en JavaScript. On parle juste de constructeur et de prototype. Mais dans l'idée, c'est ça, oui.
Donc la fonction eval telle que je l'utilise en tout cas et si on abuse un petit peu de la terminologie objet, une instance d'objet...?
Tout a fait. Enfin c'est le résultat de ce que te retourne le eval() qui est un objet.

PS: une instance d'objet n'existe pas. Un objet est une instance de classe.
Je sais, je sais... Smiley smile

Mais c'est l'habitude du POO Powa (PHP5+Zend Framework, Java, C++...) ! Comme dis plus haut : ...on abuse un petit peu de la terminologie objet... en Javascript. On s'y retrouve mieux.
Après le débat sur "le Javascript, un langage OO?" c'est pour plus tard Smiley biggrin

a écrit :
Le POO Powa, on y resiste pas! Smiley lol
Bon, désolé si je parais bien lourd (ce qui est très probable).

Il n'y a pas de débat à faire, puisque ce sont des faits : JavaScript est un langage orienté objet, mais sans classes. Smiley smile
MoOx a écrit :
Tout a fait. Enfin c'est le résultat de ce que te retourne le eval() qui est un objet.

PS: une instance d'objet n'existe pas. Un objet est une instance de classe.

Oui evidemment un objet c'est une instance... mais justement quand en JS il n'existe pas de classe, les objet js instancient quoi alors?
Julien Royer a écrit :
Bon, désolé si je parais bien lourd (ce qui est très probable).

Il n'y a pas de débat à faire, puisque ce sont des faits : JavaScript est un langage orienté objet, mais sans classes. Smiley smile

ce n'est pas l'avis de des auteurs de Javascript pour le Web 2.0, eux disent que JS fait une emulation de certains principes de la poo
olk1free a écrit :
ce n'est pas l'avis de des auteurs de Javascript pour le Web 2.0, eux disent que JS fait une emulation de certains principes de la poo

Ce n'est pas très précis comme affirmation. Est-ce que tu as des éléments à ce sujet ?
Modifié par Julien Royer (10 Aug 2007 - 17:30)
MoOx a écrit :
Vous direz ce que vous voulez mais moi, quand je fais
var truc = [b]new[/b] Machin(...)
, j'appelle ça créer un objet (donc instancier une classe Smiley langue )

Tu te trompes, alors. Smiley smile

Tu ne fais que créer un objet dont le constructeur est Machin.