Sobes.tech
Junior

Τι κάνει η μέθοδος freeze στη JavaScript;

sobes.tech AI

Απάντηση από AI

Η μέθοδος Object.freeze() παγώνει ένα αντικείμενο, αποτρέποντας την προσθήκη νέων ιδιοτήτων, τη διαγραφή των υφιστάμενων και την αλλαγή των τιμών των υφιστάμενων ιδιοτήτων. Επίσης, αποτρέπει την αλλαγή του πρωτότυπου του αντικειμένου. Ένα παγωμένο αντικείμενο παραμένει αμετάβλητο.

Εφαρμογή του Object.freeze():

  1. Δημιουργία σταθερών αντικειμένων: Εγγυάται ότι το αντικείμενο δεν θα τροποποιηθεί σε μετέπειτα κώδικα.
  2. Βελτίωση απόδοσης: Μερικοί κινητήρες JavaScript βρίσκουν πιο εύκολο να βελτιστοποιήσουν την πρόσβαση σε αμετάβλητα αντικείμενα.
  3. Ασφάλεια: Προστατεύει τα εσωτερικά δεδομένα του αντικειμένου από τυχαίες ή κακόβουλες αλλαγές.

Σημαντική σημείωση: Το Object.freeze() παγώνει μόνο επιφανειακά (ρηχό πάγωμα). Αν οι ιδιότητες του αντικειμένου αναφέρονται σε άλλα αντικείμενα, αυτά τα εσωτερικά αντικείμενα μπορούν να τροποποιηθούν αν δεν έχουν παγώσει ξεχωριστά.

Παράδειγμα:

const obj = {
  prop1: 42,
  prop2: {
    nestedProp: 'hello'
  }
};

Object.freeze(obj);

// Οι προσπάθειες αλλαγής θα αγνοηθούν σε "αυστηρή" λειτουργία
// Σε μη αυστηρή λειτουργία, μπορεί να μην προκαλέσουν σφάλμα, αλλά οι αλλαγές δεν θα πραγματοποιηθούν
obj.prop1 = 100; // Δεν θα αλλάξει
delete obj.prop1; // Δεν θα διαγραφεί
obj.newProp = 'world'; // Δεν θα προστεθεί

console.log(obj.prop1); // 42
console.log(obj.newProp); // undefined

// Το εσωτερικό αντικείμενο ΔΕΝ είναι παγωμένο
obj.prop2.nestedProp = 'goodbye'; // Θα αλλάξει
console.log(obj.prop2.nestedProp); // goodbye