我需要遍历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];
}
答案 0 :(得分:50)
if (typeof model[property] == 'function') ...
另外,请注意,您应该确保您正在迭代的属性是此对象的一部分,而不是作为继承链上某个其他对象的原型的公共属性继承: < / p>
for (var property in model){
if (!model.hasOwnProperty(property)) continue;
...
}
答案 1 :(得分:4)
我想,以下内容对您有用。
How can I check if a javascript variable is function type?
BTW,我正在使用以下来检查功能。
// 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
答案 2 :(得分:0)
您可以使用以下解决方案来检查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];
}