Συγκρούσεις Ονομάτων Μεθόδων και Ιδιοτήτων στο OOP στην JavaScript

Τα ονόματα των ιδιοτήτων και των μεθόδων δεν πρέπει να συμπίπτουν, αυτό θα προκαλέσει σύγκρουση. Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε την ακόλουθη κλάση:

javascriptclass User {
  name() {
    console.log('method');
  }
}

Ας δημιουργήσουμε ένα αντικείμενο αυτής της κλάσης:

javascriptlet user = new User;

Ας καλέσουμε τη μέθοδό του, προς το παρόν όλα λειτουργούν:

javascriptuser.name(); // λειτουργεί

Τώρα ας γράψουμε δεδομένα στην ιδιότητα με το ίδιο όνομα, αντικαθιστώντας έτσι τον κώδικα της μεθόδου:

javascriptuser.name = 'str';
user.name(); // σφάλμα

Για να αποφύγετε τέτοιες συγκρούσεις πάντα δίνετε στις μεθόδους ονόματα-ρήματα, και στις ιδιότητες - ονόματα-ουσιαστικά.

Задание 1

Διορθώστε το σφάλμα που έγινε στον ακόλουθο κώδικα:

javascriptclass Employee {
  constructor(salary) {
    this.salary = salary;
  }
  salary() {
    return this.salary + '€';
  }
}