생성자에서 프로토 타입 메소드로 확장 된 "엄격한 사용"이 있습니까?
-
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();
}
.
프로토 타입 메서드가 생성자에서 엄격한 모드를 상속하는 것을 의미합니까?
해결책
아니오.
Strict 모드는 모든 하위 스코프 (읽기 : 중첩) 범위로 확장되지만 fetch
기능이 생성되지 않으므로 내부에서 내부에서 상속되지 않습니다.각 프로토 타입 방법에서 지침을 반복해야합니다.
특권의 권한이있는 방법은 생성자가 엄격한 모드에있을 때 엄격한 모드 일 것입니다.귀하의 경우에 반복을 피하기 위해
- a) 지시문을 스크립트의 첫 번째 줄 또는 로 이동하여 전체 프로그램을 엄격하게 만듭니다.
-
B) 모듈 IIFE에서 클래스를 래핑하고 그 엄격하게 :
… = (function() { "use strict"; function Page() { // inherits strictness } Page.prototype.fetch = function() { // inherits strictness }; return Page; }());
제휴하지 않습니다 StackOverflow