如何判断javascript变量是否为函数

时间:2011-05-02 19:48:23

标签: javascript typeof

我需要遍历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];
}

3 个答案:

答案 0 :(得分:50)

使用typeof operator

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];
}