Pregunta

Estoy tratando de averiguar si la definición de "uso estricto' se extiende en el prototipo de los métodos del constructor.Ejemplo:

var MyNamespace = MyNamespace || {};

MyNamespace.Page = function() {

    "use strict";

};

MyNamespace.Page.prototype = {

    fetch : function() {

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

    }

};

De acuerdo a Mozilla se puede utilizar como:

function strict(){

    "use strict";

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

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

}

Qué significa que el prototipo de los métodos de heredar el modo estricto desde el constructor?

¿Fue útil?

Solución

No.

De modo estricto se extiende a todos los descendientes (leer:anidada) ámbitos, pero desde su fetch la función no se crea dentro de el constructor no es hereditaria.Tendrá que repetir la directiva en cada uno de los prototipos de los métodos.

Privilegiado métodos en contraste sería en modo estricto cuando el constructor está en modo estricto.Para evitar la repetición en su caso, usted puede

  • a) realizar la totalidad del programa estricto por el movimiento de la directiva a la primera línea del script, o
  • b) ajuste de su clase en un módulo IIFE, y hacer que la estricta:

    … = (function() {
        "use strict";
    
        function Page() {
            // inherits strictness
        }
        Page.prototype.fetch = function() {
            // inherits strictness
        };
        return Page;
    }());
    
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top