質問: 値がjavascriptのオブジェクトかどうかを確認する javascriptで値がオブジェクトかどうかをどうやって確認しますか
回答: それはあなたが "オブジェクトである"という意味によって異なります。 primitiveではないものすべて、つまり新しいプロパティを設定できるものが必要な場合は、次のようにします。function isanyobject(value) { return value != null && (typeof value === 'object' || typeof value === 'function'); } プリミティブ(プレーン番号/ nan/infinity、プレーン文字列、シンボル、true/false、undefined、およびnull)は除外されます。他のすべてのもの(number、boolean、およびstringオブジェクトを含む)に対してtrueを返す必要があります。 windowやconsoleのような "host"オブジェクトがtypeofと一緒に使用された場合に返すべきjsはjsでは定義されていないため、このようなチェックでカバーするのは困難です。何かが「普通の」オブジェクトかどうか、つまりそれがリテラル{}として、またはobject.create(null)を使って作成されたものかどうかを知りたい場合は、次のようにします。function isplainobject(value) { if (object.prototype.tostring.call(value) !== '[object object]') { return false; } else { var prototype = object.getprototypeof(value); return prototype === null || prototype === object.prototype; } } 編集2018 : symbol.tostringtag はobject.prototype.tostring.call(...)の出力をカスタマイズできるようになったため、オブジェクトがaとして初期化された場合でも、上記のisplainobject関数はfalseを返す場合があります。リテラル。間違いなく、慣例により、カスタム文字列タグを持つオブジェクトは、もはや単なるプレーンオブジェクトではなくなりましたが、これはさらに、プレーンオブジェクトがjavascript内にあるものの定義を曖昧にしました。