Object.freeze() prevents the object's properties from being modified: 1) It makes all direct properties of the object immutable, 2) Attempts to add, change, or delete properties will fail (silently in non-strict mode, with an error in strict mode), 3) It creates truly immutable objects that cannot be altered after creation, 4) The object's methods can still access the enclosing variables through closure, 5) This provides safer objects in applications where data integrity is important, 6) However, it only freezes the top level (shallow freeze), nested objects would need separate freezing.