使用_模拟私有属性和方法的问题
来源: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
了解下即可。祝学习愉快!
相似问题