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