Μετάδοση αντικειμένων κατά αναφορά στο JavaScript
Οι πίνακες και τα αντικείμενα διαφέρουν κάπως από τους υπόλοιπους πρωτόγονους τύπους δεδομένων. Η διαφορά είναι ότι μια μεταβλητή που αποθηκεύει έναν πίνακα, στην πραγματικότητα δεν τον περιέχει, απλά αναφέρεται σ' αυτόν.
Στην πράξη αυτό σημαίνει ότι κατά την εγγραφή ενός αντικειμένου σε μια άλλη μεταβλητή, και οι δύο μεταβλητές θα αναφέρονται στο ίδιο αντικείμενο. Ας δοκιμάσουμε στην πράξη. Ας υποθέσουμε ότι έχουμε το ακόλουθο αντικείμενο:
let obj1 = {a: 1, b: 2, c: 3};
Ας το αντιγράψουμε από τη μια μεταβλητή σε μια άλλη:
let obj2 = obj1;
Ας αλλάξουμε μια από τις μεταβλητές:
obj2.a = '!';
Ως αποτέλεσμα, οι αλλαγές θα είναι ορατές και στην άλλη μεταβλητή:
console.log(obj1); // {a: '!', b: 2, c: 3}
Χωρίς να εκτελέσετε τον κώδικα, προσδιορίστε τι θα εκτυπωθεί στην κονσόλα:
let arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
console.log(arr2);
Χωρίς να εκτελέσετε τον κώδικα, προσδιορίστε τι θα εκτυπωθεί στην κονσόλα:
let arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
arr2[1] = 'b';
console.log(arr1);
Χωρίς να εκτελέσετε τον κώδικα, προσδιορίστε τι θα εκτυπωθεί στην κονσόλα:
let arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
arr2[0] = 'b';
console.log(arr2);