型検査2のコードはobjectの場合に正しく動かないな。
if(!eval(args[i]+" instanceof "+cond)){
throw "TypeError";
}
ではなくて、
if(!eval("args[i] instanceof "+cond)){
throw "TypeError";
}
または
if(!args[i] instanceof eval(cond)){
throw "TypeError";
}
としなくてはならない。毎回構文解析するよりも解析後の動作を関数化して渡す方が良いかも。