예 :

2017-10-31 4 views
5

자바 스크립트 디자인 패턴을 읽은 다음 RMP에 SO 답변을 많이 적었고 단점이 언급 된 곳에서 책의 바로 위 인용문을 계속 찾습니다.예 :

개인용 기능이 공용 기능을 참조하는 경우 패치가 필요한 경우 공용 기능을 대체 할 수 없다는 단점이 있습니다. 이는 개인 함수가 개인 구현을 계속 참조하고 패턴이 공용 멤버에는 적용되지 않고 함수에만 적용되기 때문입니다.

개인 변수를 참조하는 공용 개체 멤버는 또한 무 패치 규칙의 적용을받습니다.

결과적으로 Revealing Module 패턴으로 생성 된 모듈은 원래 Module 패턴으로 생성 된 모듈보다 취약 할 수 있으므로 사용 중에주의해야합니다.

미안하지만 나는 위의 설명이 나를 위해 그것을하지 않고있다. 누군가 그 불이익이 의미하는 코드가 풍부한 시각적 예를 제공 할 수 있습니까?

+0

모듈을 패치하는 것이 무슨 뜻인지 아십니까? – Bergi

+0

단점을 언급 한 답변을 연결할 수 있습니까? – Bergi

답변

1

나는 이것이 인용 된 단점을 설명한다고 생각합니다. 개인적으로, 나는 그것이 단순히 오지 않을 것이기 때문에 상속에 대한 구성을 선호한다면 이것이 큰 거래라고 생각하지 않습니다.

var revealed = (function() {  
    function foo() { 
    return baz(); 
    } 

    function bar() { 
    return "I am the original bar!"; 
    } 

    // private function always calls bar because it's in the closure 
    // and it can't see the "instance" variable 
    function baz() { 
    return bar(); 
    } 

    return { foo : foo, bar : bar } 
})(); 

var child = Object.create(revealed); 

child.bar = function() { 
    return "I am the new bar!"; 
} 

// we want this to call the new bar but it doesn't 
console.log(child.foo()); // I am the original bar! 

희망이 있습니다.

+0

상속과 관련이 있습니까? – Bergi

+0

공정한. 상속받지 않고 패치 할 수도 있습니다. 그러나 결과는 동일합니다. 그리고 이런 종류의 패치가 단순히 그렇게 자주 나오지 않기 때문에 여전히 큰 문제는 아닙니다. –