ความเป็นส่วนตัวในรูปแบบเก่าใน OOP ใน JavaScript
การประกาศคุณสมิติและเมธอดส่วนตัว
ผ่านสัญลักษณ์ # เพิ่งจะปรากฏใน JavaScript
ไม่นานมานี้ ก่อนหน้านี้จำเป็นต้อง
ใช้เทคนิคพิเศษที่ชาญฉลาด
สาระสำคัญของเทคนิคนี้คือการตกลงกันว่า ชื่อของคุณสมบัติและเมธอดส่วนตัว ควรเริ่มต้นด้วยสัญลักษณ์ขีดล่าง ในความเป็นจริงชื่อเหล่านี้จะไม่ใช่ส่วนตัวอย่างแท้จริง แต่เราตกลงกันว่า จะไม่ใช้พวกมันจากภายนอกคลาส
ลองมาทดสอบกัน สร้าง คุณสมบัติส่วนตัวในสไตล์นี้:
class User {
constructor(name) {
this._name = name;
}
show() {
return this._name;
}
}
สร้างอ็อบเจ็กต์ของคลาส:
let user = new User('john', 'smit');
เรียกเมธอดที่แสดงค่า ของคุณสมบัติของเรา:
console.log(user.show());
ความพยายามในการเข้าถึงคุณสมบัตินี้จากภายนอก คลาสจะไม่ทำให้เกิดข้อผิดพลาด:
console.log(user._name); // ไม่มีข้อผิดพลาด
ในโค้ดต่อไปนี้ ให้ทำให้ คุณสมบัติเป็นส่วนตัว:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getName() {
return this.name;
}
getSalary() {
return this.salary;
}
}
ในโค้ดต่อไปนี้ ให้ทำให้เมธอดช่วยเหลือ เป็นส่วนตัว:
class Employee {
constructor(name, salary) {
this.name = name;
this.salary = salary;
}
getSalary() {
return this.addSign(this.salary);
}
addSign(num) {
return num + '
;
}
}