如何判断一个javascript变量是否是一个函数

how to tell if a javascript variable is a function

本文关键字:一个 变量 是否是 函数 javascript 何判断 判断      更新时间:2023-09-26

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