Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.08.2015, 23:31
ild ild вне форума
Аспирант
Отправить личное сообщение для ild Посмотреть профиль Найти все сообщения от ild
 
Регистрация: 27.02.2012
Сообщений: 67

Заблокировать массив
var key = true;
var status = {a:1,b:2};

Можно ли заблокировать от изменения ассоциативные массивы, допустим у меня если key еслли false, то status.a и status.b защитить от изменения? Просто они оба у меня глобальные, очень много встречается, как то не красиво через if(key){status} постоянно

Последний раз редактировалось ild, 19.08.2015 в 23:35.
Ответить с цитированием
  #2 (permalink)  
Старый 20.08.2015, 00:04
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

const key = true;
const status = {a:1,b:2};



или https://learn.javascript.ru/descript...йствами
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 20.08.2015, 00:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

ild, на status ругается консоль
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
</head>

<body>
<script>
"use strict";
var user = {};
var key = true;
Object.defineProperties(user, {
    a: {
        get: function() {
            return this.full.a
        },
        set: function(a) {
            key && (this.full.a = a)
        },
        enumerable : true
    },
    b: {
        get: function() {
            return this.full.b
        },
        set: function(a) {
            key && (this.full.b = a)
        },
        enumerable : true
    },
    full: {
        value: {
            a: 1,
            b: 2
        }
    }
});
 alert( [user.a,user.b] );
alert( Object.keys(user) );
 user.a = 67;
alert( [user.a,user.b] ); // 67,2
 key = !key
 user.a = 88;
alert( [user.a,user.b] ); // 67,2
 key = !key
 user.a = 12345;
alert( [user.a,user.b] ); // 12345
</script>
</body>

</html>
Ответить с цитированием
  #4 (permalink)  
Старый 20.08.2015, 00:44
ild ild вне форума
Аспирант
Отправить личное сообщение для ild Посмотреть профиль Найти все сообщения от ild
 
Регистрация: 27.02.2012
Сообщений: 67

Спасибо большое, буду переваривать
Ответить с цитированием
  #5 (permalink)  
Старый 20.08.2015, 00:47
ild ild вне форума
Аспирант
Отправить личное сообщение для ild Посмотреть профиль Найти все сообщения от ild
 
Регистрация: 27.02.2012
Сообщений: 67

а понял, key внутри сеттера, поэтому блокируется. Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертация в массив Alex1233 Общие вопросы Javascript 12 13.05.2015 12:04
Как в шаблоне диррективы узнать массив это или строка? delias Angular.js 1 18.03.2014 07:33
Массив объектов doox911 Библиотеки/Тулкиты/Фреймворки 6 16.01.2014 22:36
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30