构造函数中的“使用strict”是否扩展到原型方法?
-
21-12-2019 - |
题
我试图弄清楚'使用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();
}
.
这是否意味着原型方法从构造函数继承严格模式?
解决方案
no。
严格模式确实扩展到所有后代(读取:嵌套)范围,但由于未在内部创建生成的fetch
函数,因此它不会继承。您需要在每个原型方法中重复该指令。
在构造函数处于严格模式时,对比度的特权方法将是严格的模式。要避免在案例中重复,可以
- a)通过将指令移动到脚本的第一行,或 来使整个程序严格。
-
b)将您的类包装在模块Iife中,并使其严格:
… = (function() { "use strict"; function Page() { // inherits strictness } Page.prototype.fetch = function() { // inherits strictness }; return Page; }());
不隶属于 StackOverflow