JScriptでrequireとかimportとかロードみたいな

http://iriyak.adam.ne.jp/wiliki/uwsc.cgi?iriyak%3AJScript%3A%A5%D5%A5%A1%A5%A4%A5%EB%A4%F2%A5%ED%A1%BC%A5%C9:tilteのまんま。

実行側

eval(contentsOfFile('.\\mylib.js'));

p(globalVar1);
p(globalVar2);
func1();
func2();

function contentsOfFile(scriptfile) {
    var readStream = file→readStream(filepath→file(scriptfile));
    var returnValue = '';
    try {
        returnValue = readStream.readAll();
    } finally {
        readStream.close();
    }
    return returnValue;
}

function filepath→file(filepath) {
    var aFileSystemObject = new ActiveXObject('Scripting.FileSystemObject');
    if (!aFileSystemObject.fileExists(filepath))
        aFileSystemObject.createTextFile(filepath, true); // 2nd arg : overwrite
    return aFileSystemObject.getFile(filepath); 
}

function file→readStream(file) {
    var ForReading = 1;
    var TristateUseDefault = -2;
    return file.openAsTextStream(ForReading, TristateUseDefault);
}

→みたいな多バイト文字が文で使えることにも驚いた。

呼び出され側

var globalVar1 = 'mylib.js';
var globalVar2 = 2;

function p(message) {
    WScript.Echo(message);
}
function func1() {
    p('func1 is defined by mylib.js.');
}

function func2() {
    p('func2 is defined by mylib.js.');
}