Чет я тут подумал, проверку типов в js можно делать гораздо проще, чем это обычно делается, например, через тайпов и пр. Можно делать вот так например:
String.prototype.str=true
types={
str: "foo",
arr: [],
ob: {},
fu: function(){},
__proto__: null
}
for(i in types){
console.log(i+": "+types[i].str)
}
tst=function(arg){
if(arg.str) return eval(arg); return arg()
}
tst("console.log('foo')")
tst(function(){console.log("bar")})
//str: true
//arr: undefined
//ob: undefined
//fu: undefined
//foo
//bar