一:对象和模块作用域:
(一):global的概念:
1:在之前使用JavaScript的过程中,在浏览器中默认声明的变量、函数等都属于全局对象Window。全局对象中的所有变量和函数在全局作用域内都是有效的。
2:在Node.js中,默认就是模块化的,默认声明的变量、函数都属于当前文件模块,都是私有的,只在当前模块作用域内可以使用,
3:值,可以应用全局对象global。Node.js中的global对象类似于浏览器中的Window对象,用于定义全局命名空间,所有全局变量(除了global本身以外)都是global对象的属性,在实际使用中可以省略global。
var foo = 23;//在之前浏览器中默认声明的变量和函数等都是全局变量,而在node.js中则相反. console.log(foo); console.log(global.foo);//测试foo是否为全局变量,记住所有的全局变量都是global对象的属性,类似也浏览器中的window对象。 global.foo = foo; console.log("输出global对象的foo属性的值"+global.foo);//global对象能够实现文件模块与文件模块之间的数据共享。//输出
23
undefined
输出global对象的foo属性的值23
(二):使用require()、exports、module.exports来实现模块之间内容的共享。
//被加载模块.js var s = 23; exports.s = s;//使用exports向外开放模块变量, exports.name = "deng"; module.exports.age = 100; //使用module.exports向外开放变量age exports.sayHello = function hello() { console.log("hello wan qian."); console.log("and田丹"); }; var gl = require(‘./global‘);//用来测试global对象的属性是否能过实现模块内容之间的共享. console.log(gl);//{ name: ‘li‘ }输出:
23
undefined
输出global对象的foo属性的值23
{ name: ‘li‘ }
【注意】:global.js中的程序被执行了,唯独被使用export开放的变量,以json的格式返回到gl中,
global.js
//global.js var foo = 23;//在之前浏览器中默认声明的变量和函数等都是全局变量,而在node.js中则相反. console.log(foo); console.log(global.foo);//测试foo是否为全局变量,记住所有的全局变量都是global对象的属性,类似也浏览器中的window对象。 global.foo = foo; console.log("输出global对象的foo属性的值"+global.foo); exports.name = "li";
发起加载模块.js
//发起加载模块.js var my_modul = require("./被加载模块");//require函数返回的是一个被加载模块的对象. console.log(my_modul); //{ s: 23, name: ‘deng‘, age: 100, sayHello: [Function: hello] } console.log("my_modul.s="+my_modul.s);//23 console.log("my_modul.name="+my_modul.name);//deng //输出 23 undefined 输出global对象的foo属性的值23 { name: ‘li‘ } { s: 23, name: ‘deng‘, age: 100, sayHello: [Function: hello] } my_modul.s=23 my_modul.name=deng【注意】:在发起加载模块中也运行了global模块中的代码,这是因为他加载的模块(即被加载的模块)加载了global.js模块,但是开放部分没有继承。
原文地址:https://www.cnblogs.com/1314bjwg/p/12399047.html
时间: 2024-10-27 17:36:26