javascriptの柔軟さがスキ♪

以下はjavaでよく書くコード。

if (str == null || str == '') ・・・

これを検証するメソッドくらい最初からStringクラスが持っておけーと思うんですけどね。C#なら

if (str.IsNullOrEmpty()) ・・・

と書けます。最初から組み込まれてるんです。javaの場合は組み込まれてないんで、以下のようにutilityクラスを利用する。例はcommons-langのStringUtilsを利用している。

if (StringUtils.isEmpty(str)) ・・・

ま、これが限界っす。java.lang.Stringを継承して新しいクラス作ってもいいけど、利用するたびキャストするなんて面倒くさすぎる。

javascriptなら

で、何が言いたいかというとjavascriptは柔軟やね、ということ。javascriptのString型にもisEmptyに相当するものはない。けどそのアプローチはjavaとは異なりutilityクラスを用意することなく、足りないものは追加しちゃえってな事ができる。prototypeを利用すれば簡単に出来ます。

String.prototype.isEmpty = function(){ ・・・ };

関数内部はString型がどのように代入された文字を保持しているかが分からないので書けない。けどそんなのかんけーねー。すぐ確認できる。

var str = 'hoge';
for(var c in str) { console.log(c + ' : ' + str[c]); }

結果は

0 : h
1 : o
2 : g
3 : e

となった。ふーん、こんな風に持ってたのか。これが分かれば実装は簡単。使用例も交えて。

String.prototype.isEmpty = function(){ return !this[0] };

console.info('hoge'.isEmpty()); // false
console.info(''.isEmpty()); // true

面白いねぇ。