|
@@ -19,59 +19,21 @@ |
|
|
<body> |
|
|
<body> |
|
|
<script> |
|
|
<script> |
|
|
var мир = {}; |
|
|
var мир = {}; |
|
|
мир.путь = function(пп) { |
|
|
|
|
|
var уровень = мир; |
|
|
|
|
|
var длина = пп.length; |
|
|
|
|
|
for (var i = 0; i < длина; ++i) |
|
|
|
|
|
{ |
|
|
|
|
|
var п = пп[i]; |
|
|
|
|
|
if (уровень[п]) |
|
|
|
|
|
{ |
|
|
|
|
|
уровень = уровень[п]; |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
уровень[п] = {}; |
|
|
|
|
|
уровень = уровень[п]; |
|
|
|
|
|
console.debug("создаём уровень", i, п, уровень); |
|
|
|
|
|
}; |
|
|
|
|
|
} |
|
|
|
|
|
return уровень; |
|
|
|
|
|
}; |
|
|
|
|
|
мир.строкаПути = function(п) { |
|
|
мир.строкаПути = function(п) { |
|
|
function вСтроку(ключ) { |
|
|
function вСтроку(ключ) { |
|
|
return `["${ключ}"]`; |
|
|
return `["${ключ}"]`; |
|
|
} |
|
|
} |
|
|
return "мир" + п.map(вСтроку).join("") + " = "; |
|
|
return "мир" + п.map(вСтроку).join("") + " = "; |
|
|
}; |
|
|
}; |
|
|
мир.задатьЗначение = function(путь, значение) { |
|
|
|
|
|
|
|
|
мир.создатьПуть = function(путь) { |
|
|
var уровень = мир; |
|
|
var уровень = мир; |
|
|
var длина = путь.length; |
|
|
var длина = путь.length; |
|
|
for (var i = 0; i < длина; ++i) |
|
|
for (var i = 0; i < длина; ++i) |
|
|
{ |
|
|
{ |
|
|
var п = путь[i]; |
|
|
var п = путь[i]; |
|
|
var конец = (i == длина - 1); |
|
|
|
|
|
if (уровень[п]) |
|
|
|
|
|
|
|
|
if (!уровень[п]) |
|
|
{ |
|
|
{ |
|
|
if (конец) |
|
|
|
|
|
{ |
|
|
|
|
|
уровень[п] = значение; |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
уровень = уровень[п]; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
if (конец) |
|
|
|
|
|
{ |
|
|
|
|
|
уровень[п] = значение; |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
уровень[п] = {}; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
уровень[п] = {}; |
|
|
}; |
|
|
}; |
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
@@ -81,25 +43,20 @@ |
|
|
var внутреннийПуть = путь.slice(); |
|
|
var внутреннийПуть = путь.slice(); |
|
|
внутреннийПуть.push(ключ); |
|
|
внутреннийПуть.push(ключ); |
|
|
var значение = словарь[ключ]; |
|
|
var значение = словарь[ключ]; |
|
|
console.debug("ключ/путь/значение", ключ, внутреннийПуть, значение); |
|
|
|
|
|
var уровень = мир.путь(внутреннийПуть); |
|
|
|
|
|
|
|
|
мир.создатьПуть(внутреннийПуть); |
|
|
if (typeof значение === "string") |
|
|
if (typeof значение === "string") |
|
|
{ |
|
|
{ |
|
|
// Функция. |
|
|
// Функция. |
|
|
if (значение.startsWith("function")) |
|
|
if (значение.startsWith("function")) |
|
|
{ |
|
|
{ |
|
|
var содержимое = мир.строкаПути(внутреннийПуть) + значение; |
|
|
var содержимое = мир.строкаПути(внутреннийПуть) + значение; |
|
|
console.debug("содержимое", содержимое); |
|
|
|
|
|
eval(содержимое); |
|
|
eval(содержимое); |
|
|
} |
|
|
} |
|
|
// Строка. |
|
|
// Строка. |
|
|
else |
|
|
else |
|
|
{ |
|
|
{ |
|
|
console.debug("строка", значение); |
|
|
|
|
|
var содержимое = мир.строкаПути(внутреннийПуть) + '"' + значение + '"'; |
|
|
var содержимое = мир.строкаПути(внутреннийПуть) + '"' + значение + '"'; |
|
|
eval(содержимое); |
|
|
eval(содержимое); |
|
|
//уровень = значение; |
|
|
|
|
|
//мир.задатьЗначение(внутреннийПуть, значение); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
// Вложенный объект/слоарь. |
|
|
// Вложенный объект/слоарь. |
|
@@ -128,6 +85,16 @@ |
|
|
console.debug("это проба"); |
|
|
console.debug("это проба"); |
|
|
}.toString(), |
|
|
}.toString(), |
|
|
простоСтрока: "уппамам", |
|
|
простоСтрока: "уппамам", |
|
|
|
|
|
глубже: { |
|
|
|
|
|
ещё: { |
|
|
|
|
|
/* |
|
|
|
|
|
функция9на12: function(аргумент) { |
|
|
|
|
|
console.debug("функция9на12", аргумент); |
|
|
|
|
|
}.toString(), |
|
|
|
|
|
опятьСтрока: "ого", |
|
|
|
|
|
*/ |
|
|
|
|
|
}, |
|
|
|
|
|
}, |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
json2 = JSON.stringify(json1); |
|
|
json2 = JSON.stringify(json1); |
|
|