使用_模拟私有属性和方法的问题
来源:3-5 私有属性和方法
qq_慕仰20210716
2022-06-25 16:08:45
class Person {
constructor(name) {
this._name = name;
}
_speak() {
console.log("speak");
}
getName() {
return this.name;
}
}
const p = new Person("Alex");
// 我们在创建出p对象后,访问Person类的私有属性name失败。调用私有方法也不能了。
// console.log(p.name); //undefined
// p.speak(); //p.speak is not a function
// 不能访问,那试一下能不能改变name值
// 这里刚刚有一个疑问:我以为:使用_就不可访问私有属性和方法但可以改变。后来发现原来是这里新增加的一个name和age属性
p.name = "ZS";
p.age = 11;
console.log(p.name); //ZS
console.log(p.age); //11老师您好!在以上代码中,我这里的想法对不对
// 这里刚刚有一个疑问:我以为:使用_就不可访问私有属性和方法但可以改变。后来发现原来是这里新增加的一个name和age属性
1回答
同学你好,理解没问题,是新增的属性

私有属性一般是只读的,能获取但是不能修改。这种情况可以使用setter和getter

结果是实例化的值

参考文档:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/set
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/get
了解下即可。祝学习愉快!
相似问题