Запретить изменять свойство объекта
Допустим есть следующий объект:
var Config = {}; Config.secretKey = "yo3cds";
Свойство Config.secretKey
после создания не должно изменяться. Для этого можно использовать метод Object.defineProperty()
с параметром writable: false
.
var Config = {}; // Создание свойства, которое нельзя изменить Object.defineProperty( Config, // объект, где создаётся свойство "secretKey", // свойство { value: "yo3cewqds", // значение writable: false // запретить изменять свойство } );
На примере выше было создано свойство Config.secretKey
, которое теперь нельзя изменить.
Config.secretKey; // yo3cewqds // Попытка изменить свойство Config.secretKey = "Новое значение"; Config.secretKey; // yo3cewqds
При этом повторное использование метода Object.defineProperty()
для свойства Config.secretKey
будет возвращать ошибку «нельзя переопределить свойство: secretKey» (на англ. «VM1650:1 Uncaught TypeError: Cannot redefine property: secretKey»).
Метод Object.defineProperty()
появился в EcmaScript 5.1, поддерживается всеми современными браузерами, полная поддержка IE с версии IE 9.
Поддержать автора