0

クラシックに代わるものがあるかどうか疑問に思っていました。

if (typeof firstPost === 'object' && typeof firstPost.active === 'boolean' && typeof firstPost.message === 'string' && typeof firstPost.maxHeight)

より多くのコードを書くのを避けるために、オブジェクトをループするかもしれません。

4

4 に答える 4

0

オブジェクト インスタンスは truey!!{} === trueであるため、最初のチェックは簡略化できます。後でプロパティがあるかどうかをチェックするため、特にオブジェクトをチェックする必要はありません。

また、ほとんどの場合、オブジェクト内にデータがあるかどうかだけを知る必要があり、特定の型であるかどうかを正確に知る必要はありません。

function notUndef (aux) {
 return aux !== undefined;
}

if (firstPost && notUndef(firstPost.active) && notUdenf(firstPost.message) && notUndef(firstPost.maxHeight))

チェックするプロパティのリストが非常に長い場合は、ループを使用できます。

function checkHasProps (obj, properties) {
  obj || return false; 
  var hasAll = true;
  properties.forEach(function (prop) {
    if (obj[prop] === undefined) {
      hasAll = false;
    }
  });
  return hasAll;
}

if (checkHasProps(['active', 'message', 'maxHeight', (...)]));

そして、それは物事をチェックするための完全に信頼できる方法ではないことを覚えておいてtypeof [] === 'object'くださいtypeof.

于 2013-07-24T09:05:10.103 に答える