mozilla
Vos résultats de recherche

    Object.prototype.__noSuchMethod__

    Non standard
    Cette fonctionnalité n'est ni standard, ni en voie de standardisation. Ne l'utilisez pas pour des sites accessibles sur le Web : elle ne fonctionnera pas pour tout utilisateur. Il peut également y avoir d'importantes incompatibilités entre les implémentations et son comportement peut être modifié dans le futur.

    Obsolète depuis Gecko 39 (Firefox 39 / Thunderbird 39 / SeaMonkey 2.36)
    Cette fonctionnalité est obsolète. Bien qu'encore supportée par des navigateurs, son utilisation est découragée pour tout nouveau projet. Évitez de l'utiliser.

    __noSuchMethod__ n'est pas standard, la spécification ECMAScript Harmony (ES6) fournira les objets Proxy qui permettent de réaliser ce qui pouvait être fait avec cette propriété (et plus encore).
     

    Résumé

    La propriété __noSuchMethod__ fait référence à une fonction à exécuter lorsqu'on appelle une méthode qui n'est pas définie pour un objet.

    Syntaxe

    obj.__noSuchMethod__ = fun

    Paramètres

    fun
    Une fonction de la forme
    function (id, args) { . . . }
    id
    Le nom de la méthode qui n'est pas définie pour l'objet et qui a été appelée.
    args
    Le tableau d'arguments passé à la méthode.

    Description

    Par défaut, lorsqu'on appelle une méthode qui n'existe pas pour un objet, cela lève une exception TypeError. Ce comportement peut être modifié en définissant une fonction pour la propriété __noSuchMethod__. Cette fonction prend en compte deux arguments : le premier qui est le nom de la méthode non définie qui a été appelée et le second qui correspond au tableau des arguments passés lors de l'appel. Le deuxième argument est bien un tableau (il hérite de Array.prototype) et n'est pas un objet semblable à un tableau comme l'objet arguments.

    Si cette méthode ne peut être appelée, soit parce qu'elle vaut undefined (sa valeur par défaut), soit parce qu'elle a été supprimée ou définie avec une valeur qui n'est pas une fonction, le moteur JavaScript reprendra le comportement par défaut et renverra des exceptions TypeError.

    Note : bien que __noSuchMethod__ ne soit pas standard, ECMAScript 6 a introduit les Proxy qui permettent de réaliser les mêmes actions (voire plus) que cette méthode.

    Exemples

    Un test simple avec __noSuchMethod__

    var o = {
      __noSuchMethod__: function(id, args) { 
                         console.log(id, '(' + args.join(', ') + ')');
                        }
    };
    
    o.toto(1, 2, 3);
    o.truc(4, 5);
    o.machin();
    
    // affichera
    // toto (1, 2, 3)
    // truc (4, 5)
    // machin ()
    

    Spécifications

    Cette propriété ne fait partie d'aucune spécification.

    Compatibilité des navigateurs

    Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
    Support simple Pas de support 1.0 (1.7 ou moins) Pas de support Pas de support Pas de support
    Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    Support simple Pas de support Pas de support 1.0 (1.0) Pas de support Pas de support Pas de support

    Cette fonctionnalité sera retirée à l'avenir : voir le bug 683218.

    Étiquettes et contributeurs liés au document

    Contributors to this page: BenoitL, Jeremie, SphinxKnight, teoli
    Dernière mise à jour par : SphinxKnight,