Σύγκριση αντικειμένων στην ΑΟΠ στην JavaScript

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

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

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

javascriptlet user1 = new User('1');
let user2 = new User('2');

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

javascriptconsole.log(user1 === user1); // true

Τώρα ας συγκρίνουμε μεταβλητές, που περιέχουν αναφορά σε διαφορετικά αντικείμενα:

javascriptconsole.log(user1 === user2); // false
Задание 1

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

javascriptclass Employee {
  constructor(name) {
    this.name = name;
  }
}

let emp1 = new Employee('john');
let emp2 = new Employee('eric');

console.log(emp1 === emp2);
Задание 2

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

javascriptclass Employee {
  constructor(name) {
    this.name = name;
  }
}

let emp1 = new Employee('john');
let emp2 = new Employee('eric');

console.log(emp1 === emp1);
Задание 3

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

javascriptclass Employee {
  constructor(name) {
    this.name = name;
  }
}

let emp1 = new Employee('john');
let emp2 = new Employee('john');

console.log(emp1 === emp2);
Задание 4

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

javascriptclass Employee {
  constructor(name) {
    this.name = name;
  }
}

let emp1 = new Employee('john');
let emp2 = new Employee('eric');

console.log(emp1 !== emp1);
Задание 5

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

javascriptclass Employee {
  constructor(name) {
    this.name = name;
  }
}

let emp1 = new Employee('john');
let emp2 = emp1;

console.log(emp1 === emp2);
Задание 6

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

javascriptclass Employee {
  constructor(name) {
    this.name = name;
  }
}

let emp1 = new Employee('john');
let emp2 = new Employee('eric');

console.log(emp1 !== emp2);
Задание 7

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

javascriptclass Employee {
  constructor(name) {
    this.name = name;
  }
}

let emp1 = new Employee('john');
let emp2 = emp1;
emp2.name = 'eric';

console.log(emp1 === emp2);