Bạn không thực sự cần mới đây, Dưới đây là đúng cách để mã hóa để đạt được những gì bạn đang cố gắng để đạt được. Ngoài ra, be really careful while using new, if used unwisely it can start clobbering your Global variable
, Nếu bạn muốn sử dụng mới, John Resig có một Giải thích thực sự tốt đẹp cho làm thế nào để làm điều đó một cách đúng đắn, cho đọc thêm bài viết này bởi John Resig http://ejohn.org/blog/simple-class-instantiation/
http://jsfiddle.net/PzLKy/2/
var moduleClass = (function() {
var a =5;
return {
setA: function (inA) {
a=inA;
} ,
getA: function() {
alert(a);
}
};
})();
var instance = moduleClass;
instance.setA(8);
instance.getA();
Chỉnh sửa: contactmatt là đúng, chắc chắn không sợ sử dụng hàm tạo, nhưng đây là một số điều bạn cần phải biết về
Lấy từ bài viết của John Resig được đề cập trong đoạn đầu tiên,
giả sử đây là mã của bạn
function User(first, last){
this.name = first + " " + last;
}
var user = new User("John", "Resig");
user.name // John Resig
var user2 = User ("first","last");
user2.name //undefined, also this would pollute your current scope
nếu bạn gọi các nhà xây dựng, bạn sẽ không nhận được bất kỳ loại dấu hiệu và có thể là một cơn ác mộng gỡ lỗi.
một cách để giải quyết này là
function User(first, last){
if (this instanceof User) {
this.name = first + " " + last;
} else
return new User(first, last);
}
Để kết luận,
Vì vậy, nếu bạn cảm thấy constructor đó là cách tốt nhất cho vấn đề của bạn, sử dụng nó. Nhưng lưu ý, cũng là sự khởi tạo lớp đơn giản của John là một mô hình thực sự hữu ích, cố gắng trải qua nó, anh ta cũng giải thích hàm tạo chung.
sử dụng hàm tạo hàm thay vì chữ nếu bạn muốn chuyển thông số tại thời điểm khởi tạo. – dandavis
Không có cấu trúc giống lớp nào có liên quan đến mã của bạn. Bạn chỉ có một singleton được tạo ra với mô hình mô-đun. Bạn muốn gì * - chỉ sau đó chúng tôi có thể cho bạn biết mã là chính xác? – Bergi
Tôi muốn có thể khai báo các phiên bản mới và chuyển các giá trị khác nhau. Tôi không muốn làm một cái gì đó cụ thể Tôi chỉ học tập. – Petran