primordial prototype de la propriété ou de la fonction
function Ninja(){
this.swingSword = function(){
return true;
};
}
//Should return false, but will be overridden
Ninja.prototype.swingSword = function(){
return false;
};
var ninja = new Ninja();
log( ninja.swingSword(), "Calling the instance method, not the prototype method." );
maintenant vous connecter en me montrant vrai. ce qui signifie swingSword qui ont été définis dans Ninja.le prototype a remplacé alors, comment puis-je remplacer la fonction de constructeur ou de la propriété.??
je sais que la préférence est donnée constructeur variable, alors pourquoi la nécessité de définir une fonction ou une propriété à l'intérieur de prototype??
Propres propriétés de préférence, c'est la façon dont la chaîne de prototype fonctionne. Voir developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/...
vraiment beau lien
vraiment beau lien
OriginalL'auteur Mohammad Faizan khan | 2014-02-27
Vous devez vous connecter pour publier un commentaire.
La raison pour définir une fonction sur le prototype est donc qu'elle est partagée entre toutes les instances. Cela vous fera économiser de la mémoire plutôt que chaque instance d'avoir sa propre copie d'une fonction définie dans le constructeur.
Quelques autres références qui pourraient vous intéresser:
Javascript lors de l'utilisation de prototypes
http://javascript.crockford.com/inheritance.html
Pour modifier une variable d'instance de la valeur que vous avez définie dans le constructeur, vous pouvez référencer à l'aide de
this
. Donc, si vous avez mis quelque chose commethis.shouldSwingSword = true;
dans le constructeur, vous pouvez définirthis.shouldSwingSword = false;
dans votre fonction. Ensuite, vous ne vérifie commeif ninja.shouldSwingSword
. Vous ne devriez probablement pas besoin de mettre des fonctions à l'intérieur du constructeur. Celles-ci doivent généralement d'aller sur le prototype ou tout simplement la classe de l'objet lui-même (c'est à dire, une méthode statique)Vous pouvez aussi tout simplement de modifier directement la valeur en dehors de toute fonction:
ninja.shouldSwingSword = false;
. Est-ce ce que vous demandez?OriginalL'auteur Stephen Kaiser
C'est par la conception. Ne définissez pas la valeur dans le constructeur si vous le souhaitez, retourner false.
Vous pouvez également faire une méthode de définition:
OriginalL'auteur Andrew Templeton