Trong các patterns dùng trong thừa kế đã đề cập ở trên như pseudoclassical inheritance hay prototypal inheritance có một điểm yếu là các phương thức hay thuộc tính không có tính riêng tư (privacy). Tất cả thuộc tính hay phương thức đều có thể được truy cập. Trong JavaScript có hỗ trợ pattern cho phép tạo tính riêng tư cho các thuộc tính hay phương thức theo phong cách giống hàm hay mô đun gọi là functional pattern hay module pattern. Trong ví dụ với đối tượng Person, chúng ta muốn thuộc tính name là riêng tư – không thể được truy cập trực tiếp, và phương thức get_name có thể chia sẻ như sau:

var Person = function (private) {
// đối tượng private chứa thuộc tính riêng tư name
var public = {};// đối tượng public chứa phương thức có thể chia
// sẻ get_name
public.get_name = function () {
return private.name;
};
return public;
};

Thuộc tính name lúc này chỉ có thể được truy cập thông qua phương thức get_name:

var myPerson = Person({name: 'Ngoc Minh'});
alert (myPerson.get_name());

Thực thi đoạn mã trên.

Đối tượng Student thừa kế từ đối tượng Person có thể được viết như sau:

var Student = function (private){
// đối tượng public kế thừa từ Person
var public = Person(private);
// tạo một phương thức chia sẻ mới cho Student
public.saying = function (){
return "Hello, my name is " + public.get_name();
}
return public;
};
var myStudent = Student ({name:'Tien Dung'});
alert(myStudent.saying());

Thực thi đoạn mã trên.

< Thừa kế (inheritance)