Javascript 创建一个具有私有属性名的Puppy类,并为该属性创建一个名为getName和setName的getter和setter。构造函数应该
JavaScript不是我的专长,对于回答这些问题的人来说,你们绝对是救命恩人 创建一个具有私有属性名的Puppy类,并为该属性创建一个名为getName和setName的getter和setter。构造函数应使用参数初始化私有属性。 我的代码: 截图:Javascript 创建一个具有私有属性名的Puppy类,并为该属性创建一个名为getName和setName的getter和setter。构造函数应该,javascript,constructor,getter-setter,setter,getter,Javascript,Constructor,Getter Setter,Setter,Getter,JavaScript不是我的专长,对于回答这些问题的人来说,你们绝对是救命恩人 创建一个具有私有属性名的Puppy类,并为该属性创建一个名为getName和setName的getter和setter。构造函数应使用参数初始化私有属性。 我的代码: 截图: 我回答这个问题时,显然遗漏了“私人”这个突出的词。我发布的代码创建了公共实例变量 class Puppy { constructor(n) { // private property
我回答这个问题时,显然遗漏了“私人”这个突出的词。我发布的代码创建了公共实例变量
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
看起来您编写的是java而不是javascript。扩展是如何将私有属性与getter和setter一起使用,因为它们没有在构造函数的函数体中声明。此外,这会将getName和setName放在每个实例上,它们不会被继承(cf instance vs class方法)。
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