2010-11-09 34 views
6

Tôi đang sử dụng 0.3.1-pre Node.jsđối tượng 'toàn cầu' trong Node.js

Việc làm này:

typeof global.parseInt 

kết quả trong

'undefined' 

Tuy nhiên khi nhấn [Tab ] trong bảng điều khiển sau khi nhập 'toàn cầu'. đưa ra một danh sách các hàm, kể cả parseInt.

Vậy là parseTôi có phải là thành viên của không gian tên toàn cầu không?

+0

Tại sao bạn không chỉ cần thực hiện 'typeof parseInt'? Điều này làm việc cho tôi. – jwueller

+0

Có. Tôi chỉ muốn biết lý do cho sự riêng tư này là gì. – Art

Trả lời

9

Rõ ràng, đối tượng global không phải là đối tượng chung là window nằm trong trình duyệt. Đó là (theo micheil trong #nodejs @ freenode) thực sự chỉ được sử dụng trong nội bộ. Một cái gì đó về đóng cửa toàn cầu và whatnot.

parseIntsetTimeout và tất cả bạn bè đó đều là hình cầu. Không phải là một phần của bất kỳ đối tượng toàn cục có thể nhìn thấy nào.

+0

Điều đó có nghĩa là việc trang trí đối tượng toàn cầu không thực sự làm cho nó có thể truy cập được từ mô-đun hay nó có thể truy cập được nhưng chỉ có thể là thuộc tính của đối tượng chung trong các mô-đun khác? –

+2

Bất cứ điều gì bạn làm với đối tượng chung đều bị vô hiệu hóa bất cứ lúc nào. Bất cứ khi nào quá trình nút nội bộ làm một cái gì đó mà đòi hỏi phải sử dụng nó, nó reset. Vì vậy, nó không đáng tin cậy (ở tất cả) cho bất kỳ globant persistant. Trong thực tế, nơi duy nhất tôi thấy nó hoạt động trong hơn nửa giây là trong nút-repl (dòng lệnh). –

+0

cảm ơn nhận xét. Điều đó thật đáng buồn :(, đặc biệt khi nhiều người ở nhiều nơi hướng bạn đến đối tượng toàn cầu –

9

Xác định biến trong app.js mà không var, giống như myvar='someval' làm cho nó có thể nhìn thấy bên trong mỗi .js trong dự án của bạn

+0

Đó có phải là câu trả lời trực tiếp cho câu hỏi này không? Tôi không nghĩ vậy, – itsbruce

+0

Đây là câu trả lời cho những ý định có thể có đằng sau câu hỏi hoặc ý định của những người khác đang hạ cánh tại đây. Cảm ơn bFunc – zupa

+0

điều này đã giúp tôi rất nhiều.Thx! –

12

Tính đến NodeJS v0.8.14 toàn cầu dường như để làm việc trên các module như đối tượng cửa sổ hiện trong trình duyệt.

Test:

a.js:

a1 = console.log; // Will be accessed from b.js 
global.a2 = console.log; // Will be accessed from b.js 

require('./b.js'); 

b1('a: b1'); 
b2('a: b2'); 
global.b1('a: global.b1'); 
global.b2('a: global.b2'); 

b.js:

a1('b: a1'); 
a2('b: a2'); 
global.a1('b: global.a1'); 
global.a2('b: global.a2'); 

b1 = console.log; // Will be accessed from a.js 
global.b2 = console.log; // Will be accessed from a.js 

Chạy a.js kết quả đầu ra:

b: a1 
b: a2 
b: global.a1 
b: global.a2 
a: b1 
a: b2 
a: global.b1 
a: global.b2 
+0

Câu trả lời nâng cao khác. – Tushar

Các vấn đề liên quan