2017-10-31 13 views
5

Tôi đọc các mẫu thiết kế Javascript, và sau đó là một loạt các câu trả lời SO trên RMP, và tôi tiếp tục tìm ra rằng bất lợi được đề cập ở đâu, đó là trích dẫn thẳng từ cuốn sách:Mô tả các bất lợi được trích dẫn của Mô hình mô-đun tiết lộ với một ví dụ

Một bất lợi của mẫu này là nếu hàm riêng tư đề cập đến chức năng công khai, chức năng công khai đó không thể bị ghi đè nếu cần vá. Điều này là do chức năng riêng tư sẽ tiếp tục đề cập đến việc triển khai riêng tư và mẫu không áp dụng cho các thành viên công khai, chỉ áp dụng cho các chức năng.

Thành viên đối tượng công cộng tham chiếu đến biến riêng tư cũng phải tuân theo quy tắc không có bản vá. Do đó, các mô-đun được tạo ra với mô hình Mô-đun Tiết lộ có thể mỏng manh hơn các mô-đun được tạo bằng mẫu Mô-đun ban đầu, vì vậy cần lưu ý trong quá trình sử dụng.

Xin lỗi vì tôi ngu ngốc nhưng lời giải thích ở trên không thực hiện điều đó đối với tôi. Ai đó có thể cung cấp một ví dụ về hình ảnh mã phong phú về những bất lợi đó có nghĩa là gì?

+0

Bạn có biết ý nghĩa của việc vá mô-đun không? – Bergi

+0

Bạn có thể liên kết những câu trả lời đề cập đến bất lợi không? – Bergi

Trả lời

1

Tôi nghĩ rằng điều này giải thích bất lợi được trích dẫn. Cá nhân, tôi không nghĩ rằng đây là một thỏa thuận lớn nếu bạn ủng hộ thành phần thừa kế vì nó đơn giản sẽ không xuất hiện.

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! 

Hy vọng điều này sẽ hữu ích!

+0

Thừa kế phải làm gì với điều này? – Bergi

+0

Công bằng. Bạn cũng có thể vá không thừa kế. Kết quả là như nhau, tuy nhiên. Và, nó vẫn không phải là lớn của một thỏa thuận bởi vì loại vá chỉ đơn giản là không đi lên thường xuyên. –

Các vấn đề liên quan