Ok I nên biết câu trả lời cho điều này nhưng vì một lý do nào đó mà tôi chưa bao giờ thực sự hiểu hoặc có nhu cầu thực sự biết JavaScript.JavaScript cơ bản OO
Câu hỏi của tôi là: Nhìn vào các mẫu mã bên dưới, tôi hiểu chính xác hay tôi thiếu một số thông tin.
Mẫu 1
Cần phải nhanh chóng các chức năng (hoặc lớp) để sử dụng phương pháp IsOld
, và một bản sao riêng của IsOld
chức năng sẽ được tạo ra cho mỗi trường hợp.
function MyClass1() {
this.IsOld = function (age) {
if (age > 40) {
return true;
}
return false;
};
}
// sample usage
var m1 = new MyClass1();
console.log(m1.IsOld(34));
Mẫu 2
Cần phải nhanh chóng nhưng không giống như MyClass1
các đoạn mã script sẽ không cần phải tạo ra một bản sao của phương pháp IsOld
cho mỗi trường hợp lớp.
var MyClass2 = (function() {
function MyClass2() { }
MyClass2.prototype.IsOld = function (age) {
if (age > 40) {
return true;
}
return false;
};
return MyClass2;
})();
// sample usage
var m2 = new MyClass2();
console.log(m2.IsOld(34));
Mẫu 3
Không cần phải nhanh chóng các chức năng/lớp để truy cập phương pháp IsOld
. Một ví dụ đơn lẻ của phương thức IsOld
được sử dụng trên tất cả các lời gọi.
var MyClass3 = {
IsOld: function (age) {
if (age > 40) {
return true;
}
return false;
},
};
// sample uage
console.log(MyClass3.IsOld(34));
Lưu ý: Tôi đoán có rất nhiều câu hỏi/câu trả lời tương tự ở đây trên SO nhưng vì một lý do nào đó tôi không thể tìm thấy câu hỏi thực sự có ý nghĩa đối với tôi.
của bạn sự hiểu biết là chính xác, mặc dù ví dụ thứ hai là phức tạp không cần thiết với biểu thức hàm IMO ngay lập tức. –
@ FelixKling: Thực ra đây là cách CoffeeScript biên dịch các lớp của nó: http://coffeescript.org/#try:class%20Auto – Amberlamps