JavaScript 変数が関数であるかどうかを確認する方法 質問する

JavaScript 変数が関数であるかどうかを確認する方法 質問する

JavaScript オブジェクトのプロパティをループする必要があります。プロパティが関数なのか、単なる値なのかはどうすればわかりますか?

var model =
{
    propertyA: 123,
    propertyB: function () { return 456; }
};

for (var property in model)
{
    var value;
    if(model[property] is function) //how can I tell if it is a function???
        value = model[property]();
    else 
        value = model[property];
}

ベストアンサー1

使用typeofオペレーター:

if (typeof model[property] == 'function') ...

また、反復処理するプロパティがこのオブジェクトの一部であり、継承チェーンの上位にある他のオブジェクトのプロトタイプのパブリック プロパティとして継承されていないことを確認する必要があることに注意してください。

for (var property in model){
  if (!model.hasOwnProperty(property)) continue;
  ...
}

おすすめ記事