OVH Cloud OVH Cloud

.prototype avec FireFox

4 réponses
Avatar
Bul
bonjour à tous,
j'utilise ce qui suit avec Internet Explorer, sans problème :
( simplification de mon script réel )

<script type="text/javascript">
function ini(p) { this.mem=p; }
function ini.prototype.aff(txt) { alert(txt+"="+this.mem); }
var c=new ini("abcd");
c.aff("exemple");
</script>

avec FireFox erreur sur le 1er point de "function ini.prototype.aff...
j'ai essayé plusieurs choses, mais pas les bonnes, pour que cela
fonctionne au moins sur ces 2 navigateurs.
pouvez-vous m'aider ? j'ai été bien incapable de trouver des
explications (en français) quelque part.
merci d'avance. @+

4 réponses

Avatar
Bul
a priori, je viens de trouver une solution :

function ini(p)
{ this.mem=p;
this.aff¯f;
}
function aff(txt)
{
alert(txt+"="+this.mem);
}

ce que je ne comprend pas : c'est pourquoi le paramètre (txt)
est-il bien pris en compte ?
d'un coté on définit avec 1 paramètre et de l'autre on l'indique
sans. ça m'échappe.
@+
Avatar
YD
bonjour à tous,
j'utilise ce qui suit avec Internet Explorer, sans problème :
( simplification de mon script réel )

<script type="text/javascript">
function ini(p) { this.mem=p; }
function ini.prototype.aff(txt) { alert(txt+"="+this.mem); }
var c=new ini("abcd");
c.aff("exemple");
</script>


IE autorise cette syntaxe !
L'habitude est d'écrire :

function ini(p) { this.mem=p; }
ini.prototype.aff = function (txt) { alert(txt+"="+this.mem); }


--
Y.D.

Avatar
YD
a priori, je viens de trouver une solution :

function ini(p)
{ this.mem=p;
this.aff¯f;
}
function aff(txt)
{
alert(txt+"="+this.mem);
}


Oui mais dans ce cas la fonction n'est pas ajouté au prototype
mais à chaque objet créé, en plus de la variable globale aff.

ce que je ne comprend pas : c'est pourquoi le paramètre (txt)
est-il bien pris en compte ?
d'un coté on définit avec 1 paramètre et de l'autre on l'indique
sans. ça m'échappe.


Une fonction est un objet javascript de type Function. Autrement
dit quand tu définis une fonction tu crées une variable à laquelle
est attachée une chaîne correspondant à son corps et sa liste
d'arguments. On peut ensuite réaffecter cette variable etc.

La syntaxe la plus rigoureuse pour définir une fonction est la
suivante :

var delta = new Function("a","b","c","return b*b - 4*a*c;");

qui effectue exactement la même chose que :
function delta(a, b, c) {
return b*b - 4*a*c;
}

qu'on peut ensuite manipuler à volonté :
determinant = delta;
alert (determinant(5,8,3));

--
Y.D.

Avatar
Bul
merci pour toutes ces explications,
c'est beaucoup plus clair
maintenant pour moi. @+