ความเป็นส่วนตัวในรูปแบบเก่าใน OOP ใน JavaScript

การประกาศคุณสมิติและเมธอดส่วนตัว ผ่านสัญลักษณ์ # เพิ่งจะปรากฏใน JavaScript ไม่นานมานี้ ก่อนหน้านี้จำเป็นต้อง ใช้เทคนิคพิเศษที่ชาญฉลาด

สาระสำคัญของเทคนิคนี้คือการตกลงกันว่า ชื่อของคุณสมบัติและเมธอดส่วนตัว ควรเริ่มต้นด้วยสัญลักษณ์ขีดล่าง ในความเป็นจริงชื่อเหล่านี้จะไม่ใช่ส่วนตัวอย่างแท้จริง แต่เราตกลงกันว่า จะไม่ใช้พวกมันจากภายนอกคลาส

ลองมาทดสอบกัน สร้าง คุณสมบัติส่วนตัวในสไตล์นี้:

javascriptclass User {
  constructor(name) {
    this._name = name;
  }
  
  show() {
    return this._name;
  }
}

สร้างอ็อบเจ็กต์ของคลาส:

javascriptlet user = new User('john', 'smit');

เรียกเมธอดที่แสดงค่า ของคุณสมบัติของเรา:

javascriptconsole.log(user.show());

ความพยายามในการเข้าถึงคุณสมบัตินี้จากภายนอก คลาสจะไม่ทำให้เกิดข้อผิดพลาด:

javascriptconsole.log(user._name); // ไม่มีข้อผิดพลาด
Задание 1

ในโค้ดต่อไปนี้ ให้ทำให้ คุณสมบัติเป็นส่วนตัว:

javascriptclass Employee {
  constructor(name, salary) {
    this.name = name;
    this.salary = salary;
  }
  
  getName() {
    return this.name;
  }
  getSalary() {
    return this.salary;
  }
}
Задание 2

ในโค้ดต่อไปนี้ ให้ทำให้เมธอดช่วยเหลือ เป็นส่วนตัว:

javascriptclass Employee {
  constructor(name, salary) {
    this.name = name;
    this.salary = salary;
  }
  
  getSalary() {
    return this.addSign(this.salary);
  }
  
  addSign(num) {
    return num + '
;
  }
}