2010-05-31 9 views
2

Je dois apprendre comment passer un tableau associatif à une fonction pour que je puisse faire ce qui suit dans la fonction:Passer des arguments à une fonction?

function someName($argums) { 
    if (gettype($argums) != 'array' || 
     !array_key_exists('myOneKey', $argums) || 
     !array_key_exists('myOtherKey', $argums)) {    
      return false; 
    } 

    /*do other stuff*/ 
} 

(Voilà comment je le ferais en PHP que je cherche en JavaScript.

Répondre

6

Tous les objets Javascript sont des tableaux associatifs, donc c'est vraiment simple. Vous avez en fait quelques options, car un objet peut avoir des propriétés propres, des propriétés héritées de son objet prototype, des propriétés avec des valeurs indéfinies et des propriétés avec des valeurs "falsey" (undefined, null, 0, "", ou bien sûr, false). (Il y a une différence entre un objet ne pas avoir une propriété et ayant une avec une valeur indéfinie.)

Vérification pour voir si l'objet a les propriétés se: Vous utilisez obj.hasOwnProperty:

function someName(obj) { 
    if (!obj || 
     !obj.hasOwnProperty('myOneKey') || 
     !obj.hasOwnProperty('myOtherKey')) 
     return false; 
    } 
    // Do other stuff 
} 

Vérification de voir si l'objet a la propriété elle-même ou via son prototype: Vous utilisez propName in obj:

function someName(obj) { 
    if (!obj || 
     !('myOneKey' in obj) || 
     !('myOtherKey' in obj)) 
     return false; 
    } 
    // Do other stuff 
} 

Vérifier si la objet a la propriété (directement, ou via prototype) et il n'undefined: Vous cherchez une valeur non définie:

function someName(obj) { 
    if (!obj || 
     typeof obj.myOneKey === "undefined" || 
     typeof obj.myOtherKey === "undefined") 
     return false; 
    } 
    // Do other stuff 
} 

Vérifier si la propriété est Falsey (undefined, null, 0, "", ou bien sûr , false), peu importe pourquoi: Il suffit d'utiliser !:

function someName(obj) { 
    if (!obj || 
     !obj.myOneKey || 
     !obj.myOtherKey) 
     return false; 
    } 
    // Do other stuff 
} 

Quoiqu'il en soit, l'utilisation:

var obj = { 
    myOneKey: 'fred', 
    myOtherKey: 'barney' 
}; 
someName(obj); 
+0

Et comment j'appellerais cette fonction avec de tels arguments? –

+0

Et je ne peux pas utiliser l'opérateur in à la place de hasOwnProperty? –

+0

@dfjhdfjhdf: J'ajoutais une discussion de cela et de la distinction entre eux alors que vous posiez la question, apparemment. :-) –

Questions connexes