Заблокировать массив
var key = true;
var status = {a:1,b:2};
Можно ли заблокировать от изменения ассоциативные массивы, допустим у меня если key еслли false, то status.a и status.b защитить от изменения? Просто они оба у меня глобальные, очень много встречается, как то не красиво через if(key){status} постоянно |
|
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>
|
Спасибо большое, буду переваривать
|
а понял, key внутри сеттера, поэтому блокируется. Спасибо!
|
| Часовой пояс GMT +3, время: 20:23. |