Я явно пропустил однозначное слово "личное", когда ответил на этот вопрос. Код, который я разместил, создал публичные переменные экземпляра.
class Puppy {
constructor(n) {
// private property
var name = n
// methods that use private property
this.getName = () => {return name}
this.setName = (n) => {name = n}
// public property
this.nickname = n
}
// methods that use public property
setNickname(n) { this.nickname = n }
getNickname() { return this.nickname }
}
p = new Puppy("fido")
console.log("p.name",p.name) // undefined, not accessible
console.log("p.getName()",p.getName()) // fido
console.log("p.getNickname()",p.getNickname()) // fido
console.log("---")
p.name = "barker" // defines a new property on this instance of Puppy
console.log("p.name",p.name) // barker
console.log("p.getName() ",p.getName()) // doesn't change private name fido
console.log("---")
p.setName("fuzz") // change private name
console.log("p.getName()",p.getName()) // fuzz
console.log("p.getNickname()",p.getNickname()) // fido
console.log("---")
p.nickname = "chewy" // set public property directly
console.log("p.getNickname()",p.getNickname()) // chewy