2013-07-19 11 views
7

Tôi không chắc chắn đó là quy ước không gian tên tốt hơn để sử dụng.Quy ước đặt tên không gian Javascript

var App = {}; // global variable, the root of our namespace 
(function() { 

    App.something = function() { 

    } 

})(); 

hoặc

(function() { 

    window.App = {}; //global variable, the root of our namespace 

    App.something = function() { 

    } 

})(); 

window.App và var App là cả hai biến toàn cầu vì vậy cả hai công ước đạt được kết quả tương tự, nhưng mà là tốt hơn?

+1

Không có gì tốt hơn, chúng gần như tương đương. – bfavaretto

+1

Vâng, khi sử dụng 'var App = {};', bạn ** không thể ** sử dụng 'delete window.App' sau này để xóa thuộc tính. Nhưng bạn ** có thể ** khi bạn khai báo nó là 'window.App = {};'. Nhưng đó thực sự là một lý do tầm thường để sử dụng một cái khác trên – Ian

+2

Điều này có thể sẽ bị đóng vì nó dựa trên ý kiến. – gustavohenke

Trả lời

3

Sự khác biệt duy nhất là trong biến thể đầu tiên, App không thể bị xóa khỏi window, mặc dù nó có thể truy cập dưới dạng thuộc tính của đối tượng chung. Trong trường hợp thứ hai, delete window.App hoạt động. Ngoài ra, lưu ý rằng bạn nên đính kèm không gian tên của mình vào window, không phải là Window vì JavaScript phân biệt chữ hoa chữ thường và Window là một hàm tạo.

Ngoài ra, cả hai đều cơ bản giống nhau, không có "tốt hơn".

+0

Chữ hoa trên cửa sổ là một sai lầm, nhưng cảm ơn vì đã cho tôi biết. Bạn có nói một quy ước được sử dụng phổ biến hơn trong cộng đồng js hơn cộng đồng khác không? – monsoon

+2

Tôi không chắc chắn, nhưng thứ hai trông sạch hơn với tôi. Một thông thường khác là 'var App = (function() {/ * trả về đối tượng của bạn từ đây * /}())' – bfavaretto