web-dev-qa-db-fra.com

comment savoir si une variable javascript est une fonction

J'ai besoin de boucler sur les propriétés d'un objet javascript. Comment savoir si une propriété est une fonction ou juste une valeur?

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];
}
25
Mr Bell

Utilisez l'opérateur typeof :

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

Notez également que vous devez vous assurer que les propriétés que vous itérerez font partie de cet objet et ne sont pas héritées en tant que propriété publique sur le prototype d'un autre objet en haut de la chaîne d'héritage:

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

Suivre pourrait vous être utile, je pense.

Comment puis-je vérifier si une variable javascript est un type de fonction?

BTW, je suis en train de suivre pour vérifier la fonction.

    // 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
4
Kashyap

Vous pouvez utiliser la solution suivante pour vérifier si une variable JavaScript est une fonction:

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