カラクリサイクル

『輝かしい青春』なんて失かった人の雑記

JavascriptでPerlのパッケージもどき

Javascriptにパッケージもどきを導入する。


JavascriptでPerlのpackageみたいなの作れないかなーと思って色々やってたら、 それっぽいのができた。

var package = function ( className, CodeBlock ) {
    var classes = className.split('.'),
        class   = new String,
        obj;
    for ( var i = 0, len = classes.length; i < len; i++ ) {
        if ( i > 0 ) { class += '.' }
        class += classes[i];
        var evalCode = "if(typeof(" + class + ")=='undefined'){" + class + "={}}";
        ( i == len - 1 )
            ? obj = eval( evalCode )
            : eval( evalCode ) ;
    }
    if ( typeof(CodeBlock) == 'function' ) {
        CodeBlock.call(obj);
    }
    return obj;
}

使い方はこんな感じ。

package('foo');
package('foo.bar', function () {
    var self = this;
    self.say = function () {
        return alert('Javascript package!!');
    }
});

JSANに組み込むと便利かもしれない。とは思うものの、JSAN自体使ったことがないので、 うまいこと組み込めるかどうか不明。あとコードがいまいち(きれいに見えない)。

うーん。使えそうな気もするんだけど、問題も有りそうな気がする。

誰かの突っ込み待ち。