ho trovato questo codice di esempio:Come funziona "questo" nelle funzioni assegnate nel costruttore?
function personFullName() {
return this.first + ' ' + this.last;
}
function Person(first, last) {
this.first = first;
this.last = last;
this.fullName = personFullName;
}
var dude = new Person("Michael", "Jackson");
alert(dude.fullName());
che avvisa "Michael Jackson". Ho cambiato per chiamare personFullName
dal costruttore invece di assegnare l'oggetto funzione:
function personFullName() {
return this.first + ' ' + this.last;
}
function Person(first, last) {
this.first = first;
this.last = last;
this.fullName = personFullName();
}
var dude = new Person("Michael", "Jackson");
alert(dude.fullName);
mi aspetterei la proprietà "fullName" di essere ormai una stringa invece di una funzione. Ma ora avvisa "indefinito indefinito". Qualcuno può spiegare perché la mia versione non funziona?
Vedere questa risposta per una spiegazione completa di come 'questo' funziona: http://stackoverflow.com/questions/13441307/how-does-the-this-keyword-in-javascript-act-within-an-object -literal/13441628 # 13441628 – slebetman