是否"使用严格"在构造函数中扩展到原型方法?

时间:2014-06-04 10:32:24

标签: javascript strict use-strict

我试图弄清楚'使用严格'的定义。扩展到构造函数的原型方法。例如:

var MyNamespace = MyNamespace || {};

MyNamespace.Page = function() {

    "use strict";

};

MyNamespace.Page.prototype = {

    fetch : function() {

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

    }

};

根据Mozilla,您可以将其用作:

function strict(){

    "use strict";

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

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

}

这是否意味着原型方法从构造函数继承严格模式?

1 个答案:

答案 0 :(得分:5)

没有

严格模式确实扩展到所有后代(读取:嵌套)范围,但由于您的fetch函数未在 内部创建,因此它不会被继承。您需要在每个原型方法中重复该指令。

当构造函数处于严格模式时,对比的特权方法将处于严格模式。为避免重复,您可以

  • a)通过将指令移动到脚本的第一行或
  • 来使整个程序严格
  • b)将你的课程包装在IIFE模块中,然后严格要求:

    … = (function() {
        "use strict";
    
        function Page() {
            // inherits strictness
        }
        Page.prototype.fetch = function() {
            // inherits strictness
        };
        return Page;
    }());