変数が純粋な Object インスタンスかどうかを確認する必要があります。例: HTMLElement はinstanceof Object です。しかし、それが単なるオブジェクトであるかどうかを確認する必要があり{a: true, b: false}
ます。配列を検証することはできません。
注: Chrome の新しい機能を使用できます。
変数が純粋な Object インスタンスかどうかを確認する必要があります。例: HTMLElement はinstanceof Object です。しかし、それが単なるオブジェクトであるかどうかを確認する必要があり{a: true, b: false}
ます。配列を検証することはできません。
注: Chrome の新しい機能を使用できます。
コンストラクタを確認してください。すべてのブラウザで動作するようです
if (a.constructor === Object)
// Good for arrays
([]).constructor === Object => false
// Good for HTMLElements
document.body.constructor === Object => false
var proto = Object.getPrototypeOf(obj);
var protoproto = Object.getPrototypeOf(proto);
if (proto === Object.prototype && protoproto === null) {
//plain object
}
null
プロトタイプを使用してオブジェクトを作成する場合は、 を削除して、またはprotoproto
と比較proto
するだけです。Object.prototype
null
その危険性は、Object.prototype
それ自体が渡されるのを防げず、おそらく偶発的にObject.prototype
.
このように少し短くて安全です:
var proto = Object.getPrototypeOf(obj);
if (proto && Object.getPrototypeOf(proto) === null) {
// plain object
}