Javascript.OOP.Hỏi về Mẫu thừa kế chức năng (mẫu cho phép tạo với các thành phần riêng tư)
http://www.ibm.com/developerworks/vn/library/12/wa-protoop/
trong liệt kê thứ 16 của bài viết này có nói như về mẫu thừa kế chức năng,vì nhược điểm của nguyên mẫu và mẫu giả cổ điển ko cung cấp 1 thành phần riêng tư nào. Nhưng mình ko hiểu cái mẫu thừa kế chức năng này thành phần riêng tư nó là cái nào và hoạt động như thế nào. Giải thích mình với (các bạn vào link rồi đến phần liệt kê 16 để xem cho dễ
var point = function(spec) {
var that = {};
that.getTimesSet = function() {
return timesSet;
};
that.getX = function() {
return spec.x;
};
that.setX = function(val) {
spec.x = val;
};
that.getY = function() {
return spec.y;
};
that.setY = function(val) {
spec.y = val;
};
return that;
};
var point3D = function(spec) {
var that = point(spec);
that.getZ = function() {
return spec.z;
};
that.setZ = function(val) {
spec.z = val;
};
return that;
};
var p = point({ x: 3, y: 4 });
p.getX(); // => 3
p.setX(5);
var p2 = point3D({ x: 1, y: 4, z: 2 });
p.getZ(); // => 2
p.setZ(3);
Mình chép lại Liệt kê 16:
Mẫu trên sẽ tạo ra 2 đối tượng point và point3D, trong đó point3D kế thừa 2 thành phần x và y trong point, còn bản thân nó tạo ra thành phần z. Cả 3 thành phần này là riêng tư vì nó không thể truy cập và sửa đổi trực tiếp như trong Liệt kê 14, 15.
Hiện nay thì với chuẩn ES6, bạn có thể dùng class để tạo thành phần riêng tư như sau:
Sao cái hướng dẫn này có cảm giác dịch bằng google dịch thế nhỉ, đọc nhiều câu tối nghĩa
Hình như có tình nguyện viên dịch, do chuyển hết các thuật ngữ Tiếng Anh sang Tiếng Việt nên đọc nhiều từ không quen.
Trên IBM cũng còn nhiều bài Tiếng Việt lắm, mà hầu hết là bài dịch.
Có cảm giác người dịch không phải dân lập trình.
đọc đoạn đó thấy nhứt cả đầu.
tốt nhất coi tài liệu bằng tiếng anh.
không hiểu thì còn biết đường lên mạng tìm hiểu thêm.
Thanks bạn. có đoạn “không thể truy cập và sửa đổi trực tiếp” thì mình mới hiểu được. Tối hôm qua cố gắng lên mạng tìm hiểu về OOP thì giờ mới hiểu được bạn nói gì chứ hôm qua thì chịu. Giờ 4 đặc tính của OOP giờ mình chỉ hiểu được tính kế thừa, sơ sơ bao đóng với đa hình chứ trừu tượng thì chịu. Trước giờ chưa làm bài tập nào về OOP toàn là đọc thôi, chắc sẽ tìm bài tập code nhiều về OOP mới hiểu hết được
Mình thấy mấy bài trên IBM developerwork dễ hiểu mà bạn. Chắc do các bạn hiểu từ theo nghĩa hướng IT nên phạm vi từ nó bị thua hẹp lại nên khi dịch ra tiếng việt thì các bạn khó hiểu thôi. Do mình ko rành về OOP nên ngoài chỗ đó ra thì chỗ nào cũng ok hết. Khi đụng đến bất kì 1 từ tiếng anh nào ko biết hoặc đã biết nhưng nghĩa rộng thì mình toàn dùng oxford để xem nghĩa trừu tượng của nó rồi dùng từ hán việt để khái quát nó lại (lý do từ hán việt độ khái quát cao), nếu bi hán việt quá thì mới hiểu luôn bằng tiếng anh. Nên khi đọc chuyển đổi giữa anh và việt thì ok hết. 1 lợi ích nữa là khi đụng lại những từ kiểu đó ở bên ngoài hay những lĩnh vực khác thì do hiểu nghĩa trừu tượng được khái quát bằng hán việt nên cũng dễ hiểu hơn.
Đoạn mình trích người ta dịch bị sai nghĩa đó bạn, bạn nên đọc tài liệu gốc tiếng Anh thì hơn. Ý của đoạn đó là các ngôn ngữ static như java để có thể làm được như js phải sử dụng mẫu thiết kế (design pattern) decorator, ở đây dịch là “mẫu của trình trang trí” dịch trắng nghĩa ra luôn.