diff --git a/SrcJyPublic.js b/SrcJyPublic.js index 2d894070..cc2f0e3a 100644 --- a/SrcJyPublic.js +++ b/SrcJyPublic.js @@ -355,4 +355,52 @@ function getHistory(){ }) return h; } +//drpy运行环境 +function drpySandBox() { + const MAX_ENVIRONMENTS = 10; + let environments = {}; + let nextId = 0; + function createOrGetEnvironment(id) { + if (id === undefined) { + // 如果没有提供ID,创建一个新环境并分配ID + id = nextId++; + } + + if (environments[id]) { + // 如果环境已存在,直接返回 + return environments[id]; + } + + // 如果环境数量达到上限,销毁最早的环境 + if (Object.keys(environments).length >= MAX_ENVIRONMENTS) { + const oldestId = Object.keys(environments).sort((a, b) => a - b)[0]; + environments[oldestId].destroy(); + delete environments[oldestId]; + } + + // 创建新环境 + environments[id] = (function() { + let data = {}; + return { + id, + execute: function(code) { + const fn = new Function('data', code); + fn(data); + }, + getVariable: function(name) { + return data[name]; + }, + setVariable: function(name, value) { + data[name] = value; + }, + destroy: function() { + delete environments[id]; + } + }; + })(); + + return environments[id]; + } + +}