Node.js 全局对象

一、全局对象概述
--全局对象,他及其所有的属性都可以在程序中任何地方访问,及全局变量。
--嵌入在浏览器中的V8引擎,支持ES原生对象,BOM和DOM对象,全局对象为window。
--Node.js中的全局对象是global,所有的全局变量都是global对象属性。 

二、global对象
global作为全局变量的宿主
--在交互模式下声明的全局变量和函数都是globaol对象的成员--全局对象污染
--在脚本模式下声明的“全局变量和函数”不是global对象的成员,避免了全局对象污染
注意:在脚本模式下,每个js文件都是一个独立的模块对象,其中创建的“全局对象和函数”都是该对象构造方法内的局部成员。

三、console对象
Node.js中console模块提供了一种控制台调试输出机制,类似于Chrome浏览器中console对象的功能。

console.time('LOOP');
  //要检测的程序
  console.timeEnd('LOOP');
  作用:检测程序执行的时间

consolef对象常用方法

console.log(123);  //日志
console.info('hello');  //消息
console.warn(456);  //警告
console.error('缺少参数');  //错误


//检测程序的执行时间
console.time('执行时间'); //开始
for(var i=0;i<100;i++){};
console.timeEnd('执行时间');

四、process对象
当操作系统启动一个程序时,会将必须的可执行文件和数据文件从文件系统调入内存,分配必须的内存空间,执行其中的代码——称为创建了一个执行进程
--全局对象global.progress就是这个进程的代码表示;
--可以使用process对象获取当前操作系统及运行时信息,并操作脚本所在执行进程,如杀死进程等

查看进程相关的信息
  process.arch  查看CPU架构类型
  process.platform  查看操作系统的类型
  process.env  查看操作系统的环境变量
  process.cwd()  查看当前的工作目录
  process.version/versions  查看当前NodeJS的版本信息
  process.memoryUsage()  查看内存的使用情况
  process.pid  查看当前NodeJS的进程编号
  process.kill()  杀死某一个NodeJS进程

五、Buffer对象
缓冲区,指一块专用于储存数据的内存区域,可用于储存读写的文件数据,网络上要传输的数据等等。

new Buffer(32);  指定缓冲区的长度,默认每个值为0
new Buffer([10,16,17]);  在缓冲区存储数组 
new Buffer('abcd');  在缓冲区存储字符串

六、全局函数
(1)定时器
①一次性定时器
setTimeout(func,delay);
 func 要执行的任务,是一个回调函数,可以用箭头函数形式
 delay 间隔的时间,单位是毫秒
 clearTimeout(timer); 清除一次性定时器 

②周期性定时器
 setInterval(func,delay);
 func 要执行的任务
 delay 间隔的时间
 clearInterval(timer); 清除周期性定时器 
相关练习:每个2秒钟,打印数字1,2,3,4,5...

var i=0;
var timer = null;
timer = setInterval(()=>{
  i++;
  console.log(i);
  //当i=10,清除定时器
  if(i==10){
    clearTimeout(timer);
  };
},2000)

process.nextTick(( )=>{ });  开启定时器,无间隔时间 

setImmediate(()=>{ }); 开启定时器 clearImmediate(timer); 

 (2)同步和异步
      同步:程序按照顺序执行,先执行前边,如果前边的程序没有执行完,后边的程序就无法执行,也称为阻塞模式
       异步:程序在执行过程中,遇到异步函数等异步操作,会把这些放在整个进程的最后边,整个进程会跳过这段继续执行,也称为非阻塞模式。 

在NodeJS中,异步操作主要是结合回调函数来实现的。

//同步和异步
console.log(1);
setTimeout(()=>{  //异步函数
  console.log(2);
},1000);
console.log(3);
//1  3  2

console.log(1);
setImmediate(()=>{  //异步函数
  console.log(2);
});
console.log(3);
//1  3  2 

console.log(1);
process.nextTick(()=>{  //异步函数
  console.log(2);
});
console.log(3);
//1  3  2 

console.log(1);
setInterval(()=>{  //异步函数
  console.log(2);
},3000);
console.log(3);
//1  3  2 2 2...

上一篇: Node.js概述
下一篇: Node.js 模块系统
作者邮箱: 203328517@qq.com