下記はなぜtrueではないのでしょうか?
javascript
1{} === Object.create(Object.prototype); //false
{} と Object.create(Object.prototype); が同義であることをコードで確認するためにはどうすれば良いでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
JavaScriptの===
をオブジェクトに使うと、それは同一のオブジェクトかを判定する意味になってしまいます。別個に作られたオブジェクトどうしは等しくなりません。
{}
のプロトタイプがObject.prototype
だと確認したいのであれば、このように書けます。
javascript
1Object.getPrototypeOf({}) === Object.prototype //これはtrue
投稿2015/12/09 00:16
総合スコア145192
0
オブジェクトの比較は参照で比較する為、別個に作られたオブジェクトは同一とは見なされません。
JavaScript
1console.log({} === {}); // false
値で比較したい場合、{}, []
とプリミティブ値だけが値として存在する場合に限り、JSON.stringify()
を利用できます。
JavaScript
1console.log(JSON.stringify({})); // "{}" 2console.log(JSON.stringify(Object.create(Object.prototype))); // "{}" 3console.log(JSON.stringify({}) === JSON.stringify(Object.create(Object.prototype))); // true
Re: re97 さん
投稿2015/12/09 01:55
総合スコア18166
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
これ、実際はなにをやりたいのでしょうか?
コードだけを見ていると特に意味のある処理に見えなかったので。
もしかしたら、どこかで生成されたオブジェクトが空かどうか、をチェックしたい、みたいなことでしょうか?
var isEmpty = Object.keys({}).length === 0;
みたいな書き方ができます。
「なにをしたいか」をセットで書いておくとより適切な回答がもらえると思いますよ。
投稿2015/12/09 08:30
総合スコア2283
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。