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 自体使ったことがないので、うまいこと組み込めるかどうか不明。あとコードがいまいち(きれいに見えない)。
うーん。使えそうな気もするんだけど、問題も有りそうな気がする。
誰かの突っ込み待ち。