Objectかどうか判定する方法
結論: Object.prototype.toString.call()
を使う。
typeofを使用した場合
以下の出力結果を予想できますか?
console.js
console.log(typeof {});
console.log(typeof []);
console.log(typeof null);
console.log(typeof undefined);
result
> "object"
> "object"
> "object"
> "undefined"
Javascriptのtypeofでは、{}, [], nullの結果が全て"object"になります。
Object.prototype.toString.callを使用した場合
console.js
console.log(Object.prototype.toString.call({}));
console.log(Object.prototype.toString.call([]));
console.log(Object.prototype.toString.call(null));
console.log(Object.prototype.toString.call(undefined));
result
> "[object Object]"
> "[object Array]"
> "[object Null]"
> "[object Undefined]"
それぞれ[object *]のformatで出力されます。