Подтвердить что ты не робот

Как определить, является ли переменная 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];
}
4b9b3361

Ответ 1

Используйте оператор typeof:

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

Также обратите внимание, что вы должны быть уверены, что свойства, которые вы выполняете, являются частью этого объекта и не наследуются как общедоступное свойство прототипа какого-либо другого объекта в цепочке наследования:

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

Ответ 2

Возможно, вам будет полезно, я думаю.

Как проверить, является ли переменная 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