<code>function Customer(name) { var risk = 0; this.name = name; } var customer = new Customer("aa"); console.log(customer.name); // aa console.log(customer.risk); // undefined </code>
Entschuldigen Sie, warum auf customer.risk nicht zugegriffen werden kann, aber auf customer.name kann zugegriffen werden.
Wessen private Variable ist risk? Wenn ja, warum kann der Kunde nicht auf seine eigene private Variable zugreifen?
<code>function Customer(name) { var risk = 0; this.name = name; } var customer = new Customer("aa"); console.log(customer.name); // aa console.log(customer.risk); // undefined </code>
Entschuldigen Sie, warum auf customer.risk nicht zugegriffen werden kann, aber auf customer.name kann zugegriffen werden.
Wessen private Variable ist risk? Wenn ja, warum kann der Kunde nicht auf seine eigene private Variable zugreifen?
Das ist überhaupt nicht das, was man Privatgrundstück nennt. Dies ist lediglich eine Variable, die Sie innerhalb der Funktion deklarieren. Da es sich um ein Attribut handelt, wissen Sie auch, ob ein Attribut privat ist oder nicht. Daher stellt sich für das Attribut selbst die Frage: „Wem gehört es?“ Wenn Sie den Konstruktor in „this.risk=0;“ ändern, werden Sie feststellen, dass „This“ der Besitzer des Attributs ist.
Wie konntest du eine solche Antwort akzeptieren?
Verwenden Sie im Funktionskonstruktor var
, um eine Variable zu deklarieren. Wenn sie nicht durch einen Abschluss oder eine ähnliche Methode verfügbar gemacht wird, ist sie von außen nicht zugänglich. Darüber hinaus ist risk
keine private Variable von customer
. Sie hat nichts mit customer
zu tun, sondern hängt mit dem Funktionsobjekt Customer
zusammen.
Die Verwendung des new
-Operators gibt ein Objekt zurück, und das this
des aufgerufenen Funktionskonstruktors zeigt auf das zurückzugebende Objekt, sodass das von Ihnen zurückgegebene Objekt auf die Eigenschaften zugreifen kann, die Sie mit this
deklarieren new
von. Dies ähnelt in gewisser Weise einem Abschluss, außer dass der Abschluss eine Funktion ist, hier ein Objekt.
Sie haben private Attribute erwähnt. Kann es trotzdem als privat bezeichnet werden, wenn darauf zugegriffen werden kann?