util是一个Node.js的核心工具模块,提供常用的函数,用于弥补核心JavaScript提供的函数过于精简的问题。
util.inherits
uitl.inherits(constructor,superConstructor)是一个实现对象间圆形继承的函数。JavaScript的面相对象特性是基于原型的,与常见的基于类的不同。JavaScript没有提供对象继承的语言级别特性,而是通过原型复制来实现的。
一个例子
定义一个Person类,一个Student的子类,使用原型的方式为Person类添加一个showName的函数,通过util.inherits实现继承。如下所示:
输出
注意
Student仅仅继承了Person在原型中定义的函数,而构造函数内部创建的sayHello函数没有被Student继承。
如果调用sudent.sayHello()方法。
objStudent.sayHello();
util.inspect
uitl.inspect(object,[showHidden],[depth],[colors])是一个将任意对象转换为字符串的方法,通常用于调试和错误输出。它至少接受一个参数object,即要转换的对象。showHidden是一个可选参数,如果值为true,将会输出更多隐藏信息。dept表示最大递归层次,如果对象很复杂,你可以指定层次以控制输出信息的多少,如果不指定depth,默认递归2层。指定为null表示将不限制递归层数完整遍历对象。如果color为true,输出格式将会以ANSI颜色编码,通常用于在终端显示更漂亮的效果。
需要注意的是,util.inspect并不会简单地直接把对象转换为字符串,即使该对象定义了toString函数也不会调用。
一个例子
输出
util.isArray(object)
如果给定的参数object是一个数组返回true,否则返回false。
输出
util.isRegExp(object)
如果给定的参数object是一个正则表达式则返回true否则返回false。
输出
util.isDate(object)
如果给定的参数object是一个日期则返回true,否则返回false
输出
util.isError(object)
如果给定的参数object是一个错误对象则返回true,否则返回false
输出