オブジェクト
me = {
name: "Mo",
age: 28,
}
があります。たとえば、このオブジェクトに「高さ」というプロパティがあるかどうかを確認したいと思います。(そうではありません)どうすればこれを行うことができますか?たとえば、「高さ」というプロパティがある場合、「5,7」という値を指定できます。
注意: プロパティ VALUE(me.name) ではなく、プロパティ NAME を確認したいと思います。
ありがとうございました。
オブジェクト
me = {
name: "Mo",
age: 28,
}
があります。たとえば、このオブジェクトに「高さ」というプロパティがあるかどうかを確認したいと思います。(そうではありません)どうすればこれを行うことができますか?たとえば、「高さ」というプロパティがある場合、「5,7」という値を指定できます。
注意: プロパティ VALUE(me.name) ではなく、プロパティ NAME を確認したいと思います。
ありがとうございました。
in
次の演算子を使用できます。
if ("height" in me) {
// object has a property named "height"
}
else {
// no property named "height"
}
オブジェクトに「height」という名前のプロパティがない場合でも、そのようなプロパティを追加できることに注意してください。
me.height = 100;
これは、オブジェクトが以前に「高さ」プロパティを持っていたかどうかに関係なく機能します。
.hasOwnProperty
Object プロトタイプから継承されたメソッドもあります。
if (me.hasOwnProperty("height"))
それと with のテストの違いはin
、プロパティが存在し、オブジェクトの直接のプロパティとして存在し、プロトタイプ チェーンを介して継承されていない.hasOwnProperty()
場合にのみ true を返すことです。
直接の答え:
if (Object.keys(me).indexOf("name") >= 0) {
//do the stuff
}
しかし、あなたがすべきことは、私がheight
プロパティを持っていることを期待して、契約上のオブジェクト/クラス/モジュールを作成することです。そうでない場合は、例外をスローする必要があります。プログラミングにおける最悪のことは、半分のお尻の期待です。それはSOLIDの教訓を破るだけでなく、このようなシナリオにつながります.
あなたが使用することができます
if (me.hasOwnProperty('height'))
{
}
else
{
}