欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Node.js 常用工具

程序员文章站 2022-06-24 23:25:48
util 是一个Node.js 核心模块,提供常用函数的集合,用于弥补核心 JavaScript 的功能 过于精简的不足。 使用方法如下: const util=require("util");//引入util模块 //定义一个异步函数 async function fn(){ return "he ......

util 是一个node.js 核心模块,提供常用函数的集合,用于弥补核心 javascript 的功能 过于精简的不足。

使用方法如下:

const util=require("util");//引入util模块

//定义一个异步函数
async function fn(){
    return "hello cyy~";
}

//将异步函数转为异常优先的回调函数风格
const callbackfn=util.callbackify(fn);

callbackfn((err,res)=>{
    if(err) throw err;
    console.log(res);
})

Node.js 常用工具

 

 

 

const util=require("util");//引入util模块

//定义一个异步函数
async function fn(){
    return promise.reject(null);
}

//将异步函数转为异常优先
const callbackfn=util.callbackify(fn);

callbackfn((err,res)=>{
    //null 在回调函数中作为一个参数有其特殊的意义
    //如果回调函数的首个参数为 promise 拒绝的原因且带有返回值,且值可以转换成布尔值 false
    //这个值会被封装在 error 对象里,可以通过属性 reason 获取
    err&&err.hasownproperty("reason")&&err.reason==="null";
})

不要问我这段代码是干嘛的,我也不知道……

 

util.inherits(constructor, superconstructor) 是一个实现对象间原型继承的函数。

const util=require("util");//引入util模块

//基础对象base
function base(){
    // 通过构造函数内定义的属性和方法
    this.name="cyy1.0";
    this.say=function(){
        console.log("hello "+this.name);
    }
}
//通过原型定义的方法
base.prototype.showname=function(){
    console.log(this.name);
}


//继承对象sub
function sub(){
    this.name="cyy2.0";
}
util.inherits(sub,base);//让sub继承自base


//基础对象base的实例
var cbase=new base();
cbase.say();//hello cyy1.0
cbase.showname();//cyy1.0
console.log(cbase);//base { name: 'cyy1.0', say: [function] }

//继承对象sub的实例
var csub=new sub();
//csub.say();
csub.showname();//cyy2.0
console.log(csub);//sub { name: 'cyy2.0' }

sub 仅仅继承了base 在原型中定义的函数,而构造函数内部创造的 base 属 性和 sayhello 函数都没有被 sub 继承。(node 版本 v10.8.0)

因此如果执行

csub.say();

结果会报错:

Node.js 常用工具

 

 

util.inspect(object,[showhidden],[depth],[colors]) 是一个将任意对象转换 为字符串的方法,通常用于调试和错误输出。

它至少接受一个参数 object,即要转换的对象。

showhidden 是一个可选参数,如果值为 true,将会输出更多隐藏信息。

depth 表示最大递归的层数,如果对象很复杂,你可以指定层数以控制输出信息的多 少。如果不指定depth,默认会递归 2 层,指定为 null 表示将不限递归层数完整遍历对象。

如果 colors 值为 true,输出格式将会以 ansi 颜色编码,通常用于在终端显示更漂亮 的效果。

特别要指出的是,util.inspect 并不会简单地直接把对象转换为字符串,即使该对 象定义了 tostring 方法也不会调用。

const util=require("util");//引入util模块

function person(){
    this.name="cyy";
    this.tostring=function(){
        return this.name;
    }
}
var p=new person();
console.log(util.inspect(p));//person { name: 'cyy', tostring: [function] }
console.log(util.inspect(p,true));
// person {
//     name: 'cyy',
//     tostring: [function] {
//       [length]: 0,
//       [name]: '',
//       [arguments]: null,
//       [caller]: null,
//       [prototype]: { [constructor]: [circular] }
//     }
//   }

Node.js 常用工具

 

 

util.isarray(object)

如果给定的参数 "object" 是一个数组返回 true,否则返回 false。

const util=require("util");//引入util模块

console.log(util.isarray([]));
console.log(util.isarray(new array));
console.log(util.isarray({}));

Node.js 常用工具

 

 

util.isregexp()

如果给定的参数 "object" 是一个正则表达式返回true,否则返回false。

const util=require("util");//引入util模块

console.log(util.isregexp(/\d/));
console.log(util.isregexp(new regexp("\d")));
console.log(util.isregexp({}));

Node.js 常用工具

 

 

util.isdate()

如果给定的参数 "object" 是一个日期返回true,否则返回false。

const util=require("util");//引入util模块

console.log(util.isdate(new date()));
console.log(util.isdate(date()));//如果没有new,返回的是string
console.log(util.isdate({}));

Node.js 常用工具