tôi đã thường xuyên gặp phải các trang web đặt tất cả các javascript của họ bên trong một cấu trúc "namespace" dọc theo dòng củaCó cách nào "súc tích" để thực hiện đặt tên trong JavaScript không?
namespaces = { com : { example: { example.com's data} }
Nhưng thiết lập này một cách an toàn đối với các khuôn khổ namespaced khác với dường như đòi hỏi một số lượng tương đối khổng lồ của mã (được định nghĩa là> 2 dòng). Tôi đã tự hỏi liệu có ai biết một cách ngắn gọn để làm điều này? và liệu có một cách tương đối chuẩn/nhất quán để cấu trúc nó không? ví dụ. sao không gian tên "com" được gắn trực tiếp vào đối tượng toàn cục, hay nó được gắn vào một đối tượng không gian tên?
[Chỉnh sửa: Rất tiếc, rõ ràng là {com = { ... } }
sẽ không thực hiện được bất kỳ điều gì gần với ý định của tôi, nhờ Shog9 đã chỉ ra điều đó. : D]
Mặc dù, bây giờ 'com_example' sẽ là một phần của đối tượng toàn cầu. Giả sử chúng ta thêm nhiều đối tượng 'com_something_else',' com_etc', thì chúng ta vẫn đang làm ô nhiễm mức root của đối tượng toàn cầu. Nó sẽ không được ưa thích hơn nếu chúng ta chỉ có một đối tượng 'com' trong toàn cầu, nơi tất cả các đối tượng khác đã được thêm vào? Ngoài ra, chúng tôi không muốn ghi đè lên bất kỳ đối tượng hiện có nào, nếu có nhiều thư viện đang được sử dụng. – Peter
@Peter: nếu nhiều thư viện xác định cùng một biểu tượng, bạn sẽ gặp vấn đề không có vấn đề gì; đó là lý do tại sao các thư viện như jQuery đi đến độ dài như vậy để nhồi nhét mọi thứ vào một đối tượng toàn cầu duy nhất. Quan điểm của tôi không phải là bạn * nên * sử dụng nhiều đối tượng cấp cao nhất, chỉ đơn thuần là các không gian tên giả mạo với các đối tượng lồng nhau không thực sự mua cho bạn bất cứ thứ gì trên các tên đối tượng điên rồ. Xem ví dụ cuối cùng của tôi cho một phương pháp thực tế hơn: sử dụng một tên chung duy nhất không có khả năng va chạm, và sau đó là một kỹ thuật cho phép các bit mã khác nhau thêm các đối tượng vào nó. – Shog9