2013-01-22 10 views
7

ब्राउज़र में चलते समय, "विंडो" ऑब्जेक्ट से जुड़ी सब कुछ स्वचालित रूप से वैश्विक वस्तु बन जाएगी। मैं नोडज में इसी तरह की वस्तु कैसे बना सकता हूं?नोडजेस में "विंडो" ऑब्जेक्ट का अनुकरण कैसे करें?

mySpecialObject.foo = 9; 
var f = function() { console.log(foo); }; 
f(); // This should print "9" to console 

उत्तर

5

आप process बजाय window

+0

मेरा मतलब है कि मैं "विंडो" के समान एक विशेष वस्तु बनाना चाहता हूं। इसे "foo" संलग्न करने से वैश्विक "foo" बन जाएगा। –

5

करने के लिए वैश्विक सामान संलग्न कर सकते हैं आप उस उद्देश्य के लिए पूर्वनिर्धारित वस्तु global उपयोग कर सकते हैं। यदि आप foo को global ऑब्जेक्ट की संपत्ति के रूप में परिभाषित करते हैं, तो यह उसके बाद उपयोग किए गए सभी मॉड्यूल में उपलब्ध होगा।

उदाहरण के लिए, में app.js:

var http = require('http'); 
var foo = require('./foo'); 

http.createServer(function (req, res) { 
    //Define the variable in global scope. 
    global.foobar = 9; 
    foo.bar();  
}).listen(1337, '127.0.0.1'); 

और foo.js में:

exports.bar = function() { 
    console.log(foobar); 
} 

सुनिश्चित करें कि आप var कीवर्ड का उपयोग नहीं करते के रूप में global वस्तु है पहले से ही परिभाषित।

प्रलेखन के लिए, http://nodejs.org/api/globals.html#globals_global देखें।

+0

लेकिन सावधान रहें, ब्राउज़र जावास्क्रिप्ट के विपरीत, वैश्विक वस्तु शब्द की भावना में वास्तव में वैश्विक नहीं हैं। वे अभी भी एक मॉड्यूल के लिए स्थानीय हैं, यह एक जावास्क्रिप्ट फ़ाइल है। दूसरे शब्दों में, किसी फ़ाइल की वैश्विक वस्तु से जुड़ी कुछ भी किसी अन्य फ़ाइल में उपलब्ध नहीं होगी, आपको इसे विशेष 'module.exports' ऑब्जेक्ट से अटैच करना होगा। अधिक जानकारी के लिए जांचें कि कैसे नोडजेस को काम की आवश्यकता होती है। –

+0

उत्तर और नोटिस के लिए धन्यवाद। मैं इस सरल समाधान में आया हूं: var mySpecialObject = वैश्विक। ब्राउज़र में (वैश्विक दायरे पर): mySpecialObject = यह। –

1

आप ग्लोबल ऑब्जेक्ट का उपयोग कर सकते हैं।

var mySpecialObject = global; 

सामान्य ब्राउज़र में::

fruit = 'banana'; 
console.log(GLOBAL.fruit); // prints 'banana' 

var car = 'volks'; 
console.log(GLOBAL.car); // prints undefined 
0

मैं इस सरल समाधान पर आए हैं

var mySpecialObject = this; // Run this at global scope 
0

आप वेब कंसोल तुलना करने के लिए टर्मिनल में चल नोड के लिए (दोनों जावास्क्रिप्ट थे, तो):

window < ->global (नोट: ग्लोबल I पदावनत रों)

वेब कंसोल में

: window.wgSiteName (दिखाने के लिए यादृच्छिक कार्यक्षमता)

नोड (टर्मिनल में

): global.url

document < ->process (नोट: कार्यक्रम की प्रक्रिया अभी चल रहा है)

वेब कंसोल में

: document.title

नोड (टर्मिनल) में: process.title

संबंधित मुद्दे