Question

Je suis à essayer de comprendre si la définition de "use strict" s'étend au prototype des méthodes du constructeur.Exemple:

var MyNamespace = MyNamespace || {};

MyNamespace.Page = function() {

    "use strict";

};

MyNamespace.Page.prototype = {

    fetch : function() {

        // do I need to use "use strict" here again?

    }

};

Selon Mozilla vous pouvez l'utiliser comme:

function strict(){

    "use strict";

    function nested() { return "And so am I!"; }

    return "Hi!  I'm a strict mode function!  " + nested();

}

Ça veut dire que le prototype des méthodes d'hériter de mode strict du constructeur?

Était-ce utile?

La solution

Pas de.

Le mode Strict ne s'étendent à tous les descendants (lire:imbriquée) étendues, mais depuis votre fetch la fonction n'est pas créé à l'intérieur de le constructeur qu'il n'est pas héréditaire.Vous devez répéter la directive dans chaque prototype des méthodes.

Privilégié les méthodes de contraste serait en mode strict lorsque le constructeur est en mode strict.Pour éviter les répétitions dans votre cas, vous pouvez

  • a) rendre l'ensemble du programme strict par le déplacement de la directive sur la première ligne du script, ou
  • b) l'enveloppe de votre classe dans un module IIFE, et de faire que le strict:

    … = (function() {
        "use strict";
    
        function Page() {
            // inherits strictness
        }
        Page.prototype.fetch = function() {
            // inherits strictness
        };
        return Page;
    }());
    
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top