1

オブジェクト
me = { name: "Mo", age: 28, } があります。たとえば、このオブジェクトに「高さ」というプロパティがあるかどうかを確認したいと思います。(そうではありません)どうすればこれを行うことができますか?たとえば、「高さ」というプロパティがある場合、「5,7」という値を指定できます。

注意: プロパティ VALUE(me.name) ではなく、プロパティ NAME を確認したいと思います。

ありがとうございました。

4

4 に答える 4

6

in次の演算子を使用できます。

if ("height" in me) {
  // object has a property named "height"
}
else {
  // no property named "height"
}

オブジェクトに「height」という名前のプロパティがない場合でも、そのようなプロパティを追加できることに注意してください。

me.height = 100;

これは、オブジェクトが以前に「高さ」プロパティを持っていたかどうかに関係なく機能します。

.hasOwnPropertyObject プロトタイプから継承されたメソッドもあります。

if (me.hasOwnProperty("height"))

それと with のテストの違いはin、プロパティが存在、オブジェクトの直接のプロパティとして存在し、プロトタイプ チェーンを介して継承されていない.hasOwnProperty()場合にのみ true を返すことです。

于 2016-07-14T10:34:02.233 に答える
1

直接の答え:

if (Object.keys(me).indexOf("name") >= 0) {
    //do the stuff
}

しかし、あなたがすべきことは、私がheightプロパティを持っていることを期待して、契約上のオブジェクト/クラス/モジュールを作成することです。そうでない場合は、例外をスローする必要があります。プログラミングにおける最悪のことは、半分のお尻の期待です。それはSOLIDの教訓を破るだけでなく、このようなシナリオにつながります.

于 2016-07-14T10:36:19.737 に答える
1

あなたが使用することができます

if (me.hasOwnProperty('height'))
{
 }
else
{
 }
于 2016-07-14T10:38:42.587 に答える