(node.js)(javascript) インスタンスのクラス名を調べたい

node.jsに関する記事一覧→ node.jsのまとめ



インスタンスのクラスを調べようとして typeof を使っても objectとしか返ってこない時があって困る事がありますが
きちんとクラス名を調べたい時は Object.prototype.toString を使います

#!/usr/local/bin/node

const puts = console.log;
const classname = Object.prototype.toString;
puts(classname.call({a: 1024, b: 2048}));
puts(classname.call(undefined));
puts(classname.call(1));
puts(classname.call(Infinity));
puts(classname.call(null));
puts(classname.call(true));
puts(classname.call([1,2,3]));
puts(classname.call("hello"));
puts(classname.call(new RegExp()));
puts(classname.call(()=>{}));

のようにします
今回の例だと

[object Object]
[object Undefined]
[object Number]
[object Number]
[object Null]
[object Boolean]
[object Array]
[object String]
[object RegExp]
[object Function]

という結果が得られます


いちいち call するのが億劫だという場合は

#!/usr/local/bin/node

const puts = console.log;
const classname = (obj)=>{return Object.prototype.toString.call(obj)};
puts(classname(new RegExp()));

みたいにすればいいですね