Подскажите пожалуйста как заблокировать изменение переменной в JS? может как-то отменять её изменение.
Ajax('POST', '/Controller/path', {}, function (result) {
window.test = result.test;
//как заблокировать изменение этой переменной. Ведь её можно изменить через консоль.
});
Такое можно сделать если объявить переменную с помощью Object.defineProperty.
Пример:
Object.defineProperty(window, "test", {
value: "Неизменяемое",
writable: false, // запретить присвоение "test="
configurable: false // запретить удаление "delete test"
});
Важно! Без use strict операция записи «молча» не сработает. Если установлен режим use strict, то дополнительно сгенерируется ошибка.
Ну в актуальном стандарте такой возможности нет. Есть некоторые договоренности, например, если название переменной начинается с _ то изменять ее значение напрямую не следует.
_superConst = "super"; //менять можно, но делая это вам будет стыдно
Но, я надеюсь, в ближайшем будущем в новом стандарте js будет доступно объявление переменной как const. Значение переменной, объявленной как const изменять физически запрещено.
const _superConst = "super"; //менять не получится
Использовать эту возможность сейчас можно, если вы подключите babel или любой другой js транслятор кода, способный превращать es6 в es5 javaScript.
скажем у вас есть объект с наименованием Person и вы хотите создать для него статическое значение.
function Person(){
this.name = "Peter";
}
затем создаете переменную и приравниваете инстансу этого объекта
var p1 = new Person();
исходник
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости