Блокировка изменения переменной JS

200
05 апреля 2017, 15:52

Подскажите пожалуйста как заблокировать изменение переменной в JS? может как-то отменять её изменение.

Ajax('POST', '/Controller/path', {}, function (result) {
        window.test = result.test;
        //как заблокировать изменение этой переменной. Ведь её можно изменить через консоль.
    });
Answer 1

Такое можно сделать если объявить переменную с помощью Object.defineProperty.

Пример:

Object.defineProperty(window, "test", {
   value: "Неизменяемое",
   writable: false, // запретить присвоение "test="
   configurable: false // запретить удаление "delete test"
});

Важно! Без use strict операция записи «молча» не сработает. Если установлен режим use strict, то дополнительно сгенерируется ошибка.

Answer 2

Ну в актуальном стандарте такой возможности нет. Есть некоторые договоренности, например, если название переменной начинается с _ то изменять ее значение напрямую не следует.

_superConst = "super"; //менять можно, но делая это вам будет стыдно

Но, я надеюсь, в ближайшем будущем в новом стандарте js будет доступно объявление переменной как const. Значение переменной, объявленной как const изменять физически запрещено.

const _superConst = "super"; //менять не получится

Использовать эту возможность сейчас можно, если вы подключите babel или любой другой js транслятор кода, способный превращать es6 в es5 javaScript.

Answer 3

скажем у вас есть объект с наименованием Person и вы хотите создать для него статическое значение.

function Person(){
    this.name = "Peter";
}

затем создаете переменную и приравниваете инстансу этого объекта

var p1 = new Person();

исходник

READ ALSO
отправка формы с данными и фото

отправка формы с данными и фото

какая работа с формой которая отправляет данные и фото стоит на клиенте? Валидацию полей и отпраку данных я умею делаю но вот как собрать...

244
Как вычислить интеграл на javascript?

Как вычислить интеграл на javascript?

Необходимо вычислить выражение :

550