Heim >Backend-Entwicklung >PHP-Tutorial >javascript - Warum ist der Zugriff auf private JS-Variablen nicht möglich?

javascript - Warum ist der Zugriff auf private JS-Variablen nicht möglich?

WBOY
WBOYOriginal
2016-08-23 09:17:431129Durchsuche

<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?

Antwortinhalt:

<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?

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn