In Ihrem Code:
> function Person(name) {
> this.name = name;
> }
Wenn Sie als Konstruktor aufgerufen werden, wird oben eine benannte Eigenschaft von a erstellt N Instanz Name und weisen Sie ihm den Wert der Name Parameter.
> Person.prototype.greet = function(otherName){
> return "Hi" + otherName + ", my name is " + name;
> }
Hier der Kennung Name wird als Variable verwendet, aber die Kennung die Sie suchen, ist eine benannte Eigenschaft der Instanz, so dass Sie es auf als solche zugreifen müssen. In der Regel wird diese Funktion als Methode der Instanz aufgerufen, so dass diese innerhalb der Funktion eine Referenz auf die Instanz ist.Sie wollen also:
return "Hi" + otherName + ", my name is " + this.name;
So, jetzt, wenn Sie tun können (beachten Sie, dass Variablen mit einem Großbuchstaben beginnen, sind per Konvention reserviert für construtors):
> var john = new Person("John");
und dann:
john.greet('Fred');
weil greet als Methode der John genannt wird, wird es zurück:
Hi Fred, my name is John
Objekteigenschaft Auflösung nichts mit Rahmen zu tun hat. Der Ausdruck "falscher Umfang" wäre besser als "falsche Zugriffsmethode". – RobG
fair genug. bearbeitet. –
danke für die hilfe – flylib