javascript使用File.write()覆盖自身是否安全?

javascript使用File.write()覆盖自身是否安全?,javascript,adobe,extendscript,Javascript,Adobe,Extendscript,这是一个用于Adobe ExtendScript的javascript。基本上,我希望在脚本中有一个持久变量来存储用户的首选项,就像使用AppleScript属性一样。我能想到的唯一方法是脚本用File.write()覆盖自己 据我所知,这是有效的。但它安全吗?我的直觉告诉我应该有一种更干净的方法来拥有持久变量,但如果没有,我只想知道自覆盖脚本是否存在任何潜在问题。我不熟悉Adobe ExtendScript,但通常情况下,您会将用户的首选项存储在一个单独的文件中,然后在程序启动时读取该文件。几

这是一个用于Adobe ExtendScript的javascript。基本上,我希望在脚本中有一个持久变量来存储用户的首选项,就像使用AppleScript
属性
一样。我能想到的唯一方法是脚本用
File.write()
覆盖自己


据我所知,这是有效的。但它安全吗?我的直觉告诉我应该有一种更干净的方法来拥有持久变量,但如果没有,我只想知道自覆盖脚本是否存在任何潜在问题。

我不熟悉Adobe ExtendScript,但通常情况下,您会将用户的首选项存储在一个单独的文件中,然后在程序启动时读取该文件。

几乎可以肯定,将程序自身替换的能力包括在内是一个错误的设计决策。首先,您会遇到一些困难,因为当前的执行线程与应该运行的文件不同,因此您肯定会收到副作用


基本上你要求的是混乱,而混乱是不好的。你应该使用一个外部文件来存储数据,或者只是将信息保存在一个变量或HTML字段中。

他正试图在这个单独的文件中更新用户的首选项。真的吗?说“覆盖自身”听起来不像是一个单独的文件。基本上,我不会建议在脚本文件运行时修改它,但请继续对当前未运行的脚本文件进行任何修改。对于这些Adobe脚本,我假设您不需要外部设置文件,除非您可以将其隐藏在标准位置以放置这些东西,否则它会明显地给用户的脚本面板增加混乱。我想知道自覆盖的潜在缺点是什么,这样我就可以权衡它的优点(即更简单的脚本和没有混乱)。
var MY_PROPERTY = true;

function reassignProperty(propName, propValue) {
    var thisFile = new File($.fileName);

    if (thisFile.open("r")) {
        var myScript = thisFile.read();
        thisFile.close();

        // Look for the property declaration and overwrite with new value
        var searchStr = new RegExp("(var " + propName + " = )" + ".+");
        var newScript = myScript.replace(searchStr, "$1" + propValue + ";");

        thisFile.open("w");
        thisFile.write(newScript);
        thisFile.close();
    }
}

reassignProperty("MY_PROPERTY", "false");