這是一個用於Adobe ExtendScript的JavaScript。基本上我想在腳本中有一個持久變量來存儲用戶的喜好,就像你可以用AppleScript property
一樣。我能想到的唯一方法就是腳本用File.write()
來覆蓋自己。使用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");
據我所知,這工作。但是安全嗎?我的直覺告訴我應該有一個更乾淨的方法來擁有持久變量,但如果沒有,我只想知道自覆蓋腳本是否存在任何潛在問題。
他試圖更新該單獨文件中的用戶首選項。 – Prescott 2011-04-01 18:34:29
真的嗎?說「覆蓋自己」聽起來不像一個單獨的文件。基本上,我絕不會建議在腳本文件運行時修改腳本文件,但可以繼續對當前未運行的腳本文件進行任何修改。 – jhocking 2011-04-01 18:48:10
你是對的,我的道歉。 – Prescott 2011-04-01 18:49:44