생성자에서 프로토 타입 메소드로 확장 된 "엄격한 사용"이 있습니까?

StackOverflow https://stackoverflow.com//questions/24035111

  •  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;
    }());
    

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top