Browse Source

уровни

master
parent
commit
a73d51f31d
1 changed files with 92 additions and 6 deletions
  1. +92
    -6
      index.html

+ 92
- 6
index.html View File

@@ -19,19 +19,96 @@
<body>
<script>
var мир = {};
мир.разобрать = function(словарь) {
мир.путь = function(пп) {
var уровень = мир;
var длина = пп.length;
for (var i = 0; i < длина; ++i)
{
var п = пп[i];
if (уровень[п])
{
уровень = уровень[п];
}
else
{

уровень[п] = {};
уровень = уровень[п];
};
}
return уровень;
};
мир.строкаПути = function(п) {
function вСтроку(ключ) {
return `["${ключ}"]`;
}
return "мир" + п.map(вСтроку).join("") + " = ";
};
мир.задатьЗначение = function(путь, значение) {
var уровень = мир;
var длина = путь.length;
for (var i = 0; i < длина; ++i)
{
var п = путь[i];
var конец = (i == длина - 1);
if (уровень[п])
{
if (конец)
{
уровень[п] = значение;
}
else
{
уровень = уровень[п];
}
}
else
{
if (конец)
{
уровень[п] = значение;
}
else
{
уровень[п] = {};
}
};
}
};
мир.разобрать = function(словарь, путь = []) {
for (ключ in словарь)
{
var внутреннийПуть = путь.slice();
внутреннийПуть.push(ключ);
var значение = словарь[ключ];
console.debug("ключ/значение", ключ, значение);
if (значение.startsWith("function"))
console.debug("ключ/путь/значение", ключ, внутреннийПуть, значение);
var уровень = мир.путь(внутреннийПуть);
if (typeof значение === "string")
{
var содержимое = `мир["${ключ}"] = ` + значение;
мир[ключ] = eval(содержимое);
// Функция.
if (значение.startsWith("function"))
{
var содержимое = мир.строкаПути(внутреннийПуть) + значение;
console.debug("содержимое", содержимое);
eval(содержимое);
}
// Строка.
else
{
console.debug("строка", значение);
уровень = значение;
//мир.задатьЗначение(внутреннийПуть, значение);
}
}
// Вложенный объект/слоарь.
else if (значение === Object(значение))
{
мир.разобрать(значение, внутреннийПуть);
}
// Неизвестное.
else
{
мир[ключ] = значение;
console.error("неизвестная пара ключ/значение", ключ, значение);
}
}
};
@@ -44,6 +121,13 @@
мир.вывести("уга");
console.debug("функция-пример исполнена. аргумент:", аргумент);
}.toString();
json1.набор = {
проба: function() {
console.debug("это проба");
}.toString(),
простоСтрока: "уппамам",
};

json2 = JSON.stringify(json1);
console.debug("2", json2);

@@ -57,6 +141,8 @@
мир.пример(123);
мир.вывести(77);

console.debug("мир", мир);

</script>
</body>
</html>

Loading…
Cancel
Save