Il n'y a actuellement aucune signification pour le mot-clé public
en JavaScript standard.
Sur la base de l'extrait de code original, je suppose que vous vouliez dire:
function myObject(){
this.keyOne=1;
this.keyTwo=2;
this.keyThree=3;
function add(){
return this.keyOne+this.keyTwo+this.keyThree;
}
return {
add: add
};
}
La fonction serait alors renvoyer un objet qui a une seule propriété: la fonction add
. Cet objet est créé par le littéral d'objet après le mot-clé return
.
Mais alors, il est inutile d'utiliser this
. Vous auriez pu écrire:
function myObject() {
var keyOne=1;
var keyTwo=2;
var keyThree=3;
function add() {
return keyOne + keyTwo + keyThree;
}
return {
add: add
};
}
Ou encore plus succinctement:
function myObject() {
var keyOne=1;
var keyTwo=2;
var keyThree=3;
return {
add: function() {
return keyOne + keyTwo + keyThree;
}
};
}
Ceci a l'avantage supplémentaire que vous ne avez pas besoin de l'appeler préfixé avec new
. Il est juste une fonction ordinaire qui crée et retourne un objet qui contient une autre fonction:
var o = myObject();
alert(o.add());
Vous pouvez permettre à l'appelant de spécifier les numéros à ajouter, comme ceci:
function myObject(keyOne, keyTwo, keyThree) {
return {
add: function() {
return keyOne + keyTwo + keyThree;
}
};
}
var o = myObject(5, 4, 7);
alert(o.add());
mise en œuvre de cette façon que je reçois a "Le résultat de l'expression 'myObject.add' [indéfini] n'est pas une fonction."; – mkind
@mkind - l'avez-vous * exactement * comme je l'ai ci-dessus? Vous pouvez voir à partir de la démo comment cela fonctionne ... votre version diffère probablement de la réponse, revérifier :) –
que la création et l'appel se produisent dans un autre fichier js ne devrait pas être un problème si elle est incluse correctement, à droite ? – mkind