Отказ от ответственности: С точки зрения константы безопасности / окончательные переменные глупы.С точки зрения повышения производительности, поскольку движок js может оптимизировать его больше, я сомневаюсь, что это имеет значение.
Тест не показывает заметного увеличения производительности.Это на самом деле не полезно, кроме педантичности или псевдобезопасности.
Единственный вариант использования - заморозить часть вашей библиотеки, чтобы пользователи не стреляли себе в ногу.
С ES5 Object.freeze
window.MyModule = Object.freeze({
RED: "#FF0000",
BLUE: "#0000FF",
GREEN: "#00FF00",
});
Вы можете (и это настоятельно рекомендуется) использовать ES5-shim для обновления старых / устаревших браузеров на соответствие.
Вы также можете просто использоватьObject.defineProperties
window.MyModule = {};
Object.defineProperties(window.MyModule, {
RED: { value: "#FF0000" },
BLUE: { value: "#0000FF" },
GREEN: { value: "#00FF00" }
});
Для вышеизложенного есть хороший ярлык, используя Object.create
window.MyModule = Object.create(null, {
RED: { value: "#FF0000" },
BLUE: { value: "#0000FF" },
GREEN: { value: "#00FF00" }
});
Будьте осторожны, устанавливаяпрототип на null
, вы можете установить его на Object.prototype