Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Заблокировать массив (https://javascript.ru/forum/misc/57794-zablokirovat-massiv.html)

ild 19.08.2015 23:31

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

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

nerv_ 20.08.2015 00:04

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

:)

или https://learn.javascript.ru/descript...йствами

рони 20.08.2015 00:33

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>

ild 20.08.2015 00:44

Спасибо большое, буду переваривать

ild 20.08.2015 00:47

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


Часовой пояс GMT +3, время: 12:25.