Tôi biết, điều này thường được thảo luận. Nhưng sau khi tìm kiếm xung quanh như một người nào đó trong thế kỷ 19, tôi cần một số lời khuyên. Tôi không có vấn đề bằng cách tuyên bố một "không gian tên", nhưng khi nói đến một chức năng prototype.foo, tôi bị mắc kẹt. Tôi tìm thấy một cách, nhưng tôi không thích nó:Khai báo không gian tên Javascript với hàm mẫu
Namespace = {}
Namespace.obj = function() {
this.foo="bar";
}
Namespace.obj.prototype.start = function() {
this.foo="fubar";
}
blah = new Namespace.obj();
blah.start();
Bây giờ, kể từ khi tôi là một chút thần kinh trong trường hợp kịch bản, tôi muốn có một cái gì đó như thế này:
Namespace = {
obj: function() {
this.foo="bar";
},
obj.prototype.start: function(tabinst) {
this.foo="fubar";
}
}
...
Nhưng sau đó nó ném một lỗi: "Uncaught SyntaxError: Mã thông báo không mong muốn."
Tôi biết, điều này là mỹ phẩm, nhưng tôi nghĩ rằng phải có một phương pháp tốt hơn để khai báo một "không gian tên" có chứa một lớp và các hàm nguyên mẫu.
Cách tiếp cận tốt đẹp, +1. – Jiri
Thans Amjad, điều này thật tuyệt. Nhưng bây giờ tôi lại vấp ngã. Tôi có nhìn thấy nó đúng không: Với cách tiếp cận này, không thể tạo ra một hàm Namespace.blah() tách biệt là obj? –
@Johnny Nếu tôi hiểu đúng câu hỏi của bạn, chỉ cần thêm hàm 'blah' vào đối tượng trả về: '. . return { obj: obj, obj2: obj2, blah: function() {/ * làm điều gì đó * /} }; ' –