这是Adobe ExtendScript的javascript。基本上我想在脚本中有一个持久变量来存储用户的首选项,就像使用AppleScript property
一样。我能想到的唯一方法是让脚本用File.write()
覆盖自己。
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");
据我所知,这很有效。但它安全吗?我的直觉告诉我应该有一个更简洁的方法来拥有持久性变量,但如果没有,我只想知道自我覆盖脚本是否存在任何潜在问题。
答案 0 :(得分:0)
我不熟悉Adobe ExtendScript,但通常您会将用户的首选项存储在单独的文件中,然后在程序启动时读取该文件。
答案 1 :(得分:0)
几乎可以肯定,包含程序替换自身的能力将是一个糟糕的设计决策。首先你会遇到困难,因为当前的执行线程与应该运行的文件不同,所以你肯定会产生副作用。
基本上你要求混淆,混乱是不好的。您应该使用外部文件来存储数据,或者只是将信息保存在HTML的变量或字段中。