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];
}
typeof
演算子 を使用します。
if (typeof model[property] == 'function') ...
また、反復しているプロパティがこのオブジェクトの一部であり、継承チェーン上の他のオブジェクトのプロトタイプのパブリックプロパティとして継承されていないことを確認してください:
for (var property in model){
if (!model.hasOwnProperty(property)) continue;
...
}
以下はあなたに役立つかもしれないと思います。
JavaScript変数が関数型かどうかを確認するにはどうすればよいですか?
ところで、私は機能をチェックするために以下を使用しています。
// Test data
var f1 = function () { alert("test"); }
var o1 = { Name: "Object_1" };
F_est = function () { };
var o2 = new F_est();
// Results
alert(f1 instanceof Function); // true
alert(o1 instanceof Function); // false
alert(o2 instanceof Function); // false
次のソリューションを使用して、JavaScript変数が関数であるかどうかを確認できます。
var model =
{
propertyA: 123,
propertyB: function () { return 456; }
};
for (var property in model)
{
var value;
if(typeof model[property] == 'function') // Like so!
else
value = model[property];
}