Безопасно ли для javascript перезаписывать себя с помощью File.write ()? - PullRequest
0 голосов
/ 01 апреля 2011

Это JavaScript для Adobe ExtendScript. По сути, я хочу, чтобы в скрипте была постоянная переменная для хранения настроек пользователя, как вы можете это сделать с помощью 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");

Насколько я мог судить, это сработало. Но безопасно ли это? Мой инстинкт инстинкт говорит мне, что должен быть более чистый способ иметь постоянные переменные, но если нет, я просто хочу знать, есть ли потенциальные проблемы с самоперезаписывающим сценарием.

Ответы [ 2 ]

0 голосов
/ 01 апреля 2011

Это почти наверняка будет плохое дизайнерское решение, включающее возможность для программы заменить себя.Во-первых, у вас возникнут трудности, поскольку текущий поток выполнения отличается от файла, который должен быть запущен, поэтому вы обязательно получите побочные эффекты.

По сути, вы просите путаницы, а заблуждение плохо,Вам следует использовать внешний файл для хранения данных или просто хранить информацию в переменной или поле HTML.

0 голосов
/ 01 апреля 2011

Я не знаком с Adobe ExtendScript, но обычно вы сохраняете настройки пользователя в отдельном файле и затем читаете этот файл при запуске программы.

...