function Person(name) {
this.name = name;
this.say = function() {
console.info('I am ' + this.name);
}
}
var p=new Person('stackoverflow');
Quelqu'un m'a dit que les codes ci-dessus sont égaux à:Comment le javascript crée-t-il un objet?
function Person(name) {
this.name = name;
this.say = function() {
console.info('I am ' + this.name);
}
}
var p={};
Person.call(p,'stackoverflow');
Est-ce vrai?
Si oui, qu'en est-il du prototype?
Chaque objet dans javascripte possède un prototype, et la chaîne de prototype tient la releationship des obejcts, je me demande si ce prototype fait quelque chose ou pas.
Dans cet exemple, lorsque l'objet de 'p' est créé, appelle-t-il une méthode intégrée de la super-classe de Person? Par ailleurs, ce que je veux savoir, c'est ce que fait la syntaxe var p=new Person('stackoverflow');
?
mise à jour ----------------- ------------------
function Person(name) {
this.name = name;
}
Person.prototype.say = function() {
console.info('I am ' + this.name);
}
Que diriez-vous si je mets le defination de dire à l'intérieur de la fonction de la personne:
function Person(name) {
this.name = name;
Person.prototype.say = function() {
console.info('I am ' + this.name);
}
}
C'est-à-dire que le premier p possède le prototype de Person? – hguser
Oui, car il s'agit d'une instance de Person et toutes les propriétés du prototype de Person sont appliquées à l'objet. Ajoutez 'Person.prototype = {test:" test "};' et testez avec firbug avec console.dir (p) dans les deux cas et vous verrez la différence. – mck89
Merci, je l'ai testé et je le sais maintenant. :) BTW, y a-t-il un plugin dans eclipse qui peut exécuter javascript directement et autonome? – hguser