Συγκρούσεις Ονομάτων Μεθόδων και Ιδιοτήτων στο OOP στην JavaScript
Τα ονόματα των ιδιοτήτων και των μεθόδων δεν πρέπει να συμπίπτουν, αυτό θα προκαλέσει σύγκρουση. Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε την ακόλουθη κλάση:
class User {
name() {
console.log('method');
}
}
Ας δημιουργήσουμε ένα αντικείμενο αυτής της κλάσης:
let user = new User;
Ας καλέσουμε τη μέθοδό του, προς το παρόν όλα λειτουργούν:
user.name(); // λειτουργεί
Τώρα ας γράψουμε δεδομένα στην ιδιότητα με το ίδιο όνομα, αντικαθιστώντας έτσι τον κώδικα της μεθόδου:
user.name = 'str';
user.name(); // σφάλμα
Για να αποφύγετε τέτοιες συγκρούσεις πάντα δίνετε στις μεθόδους ονόματα-ρήματα, και στις ιδιότητες - ονόματα-ουσιαστικά.
Διορθώστε το σφάλμα που έγινε στον ακόλουθο κώδικα:
class Employee {
constructor(salary) {
this.salary = salary;
}
salary() {
return this.salary + '€';
}
}