跳至主要內容

util - 工具

约 1783 字大约 6 分钟老猫

util模块是对齐早期Node.js的util模块而实现的,另外为方便Java交互而增加了$util.java对象。

$util.java

提供Java交互的辅助工具。

$util.java.instanceOf(obj, clazz)

  • obj {any} Java对象
  • clazz {string} 类名
  • 返回 {boolean}

判断一个对象是否属于某个指定的类的实例,如果是,返回true,否则返回false

$util.java.array(type, size)

  • type {string} 数组类型,可以是一个Java类名,或者是以下初始类型的名称:

    • "int"
    • "long"
    • "double"
    • "char"
    • "byte"
    • "float"
  • size {number} 数组大小

  • 返回 {Java数组}

创建一个Java数组并返回。例如创建二进制byte数组let bytes = $util.java.array('byte', 1024)

$util.java.toJsArray(list, nullListToEmptyArray)

  • list {List} java.util.List列表对象
  • nullListToEmptyArray {boolean} null列表对象是否转化为空数组
  • 返回 {Array}

将Java列表转换为javascript数组。

$util.java.objectToMap(obj)

  • obj {any} 对象
  • 返回 {java.util.Map}

将JavaScript object对象转换成java.util.Map

$util.java.mapToObject

  • map {Map} Java Map对象
  • 返回 {obj}

java.util.Map的java对象转换成JavaScript object对象。

$util.format(format[, ...args])

  • format {string} 类似printf的格式字符串。

$util.format() 方法使用第一个参数返回一个格式化的字符串作为类似printf的格式。

第一个参数是一个包含零个或多个 placeholder 标记的字符串。 每个占位符标记都替换为从对应的论据。 支持的占位符有:

  • %s - 字符串。
  • %d - 数字(整数或浮点值)。
  • %i - 整数。
  • %f - 浮点值。
  • %j - JSON。 如果参数被替换为字符串 '[Circular]'包含循环引用。
  • %o - 对象。 对象的字符串表示: 使用通用的 JavaScript 对象格式。 类似于 $util.inspect(),带有选项 \{ showHidden: true, depth: 4, showProxy: true \}。 这将显示完整的对象,包括不可枚举的符号和属性。
  • %O - 对象。 具有通用 JavaScript 对象格式的对象的字符串表示形式。 类似于 $util.inspect() 没有选项。 这将显示不包括不可枚举符号和属性的完整对象。
  • %% - 单个百分号('%')。 这不会消耗一个论点。

如果占位符没有对应的参数,则占位符为没有被替换。

$util.format('%s:%s', 'foo');
// Returns: 'foo:%s'

如果传递给 $util.format() 方法的参数多于占位符的数量,则额外的参数将被强制转换为字符串,然后连接到返回的字符串,每个字符串由空格分隔。 typeof'object''symbol' 的过多参数(null 除外)将由 $util.inspect() 转换。

$util.format('%s:%s', 'foo', 'bar', 'baz'); // 'foo:bar baz'

如果第一个参数不是字符串,则 $util.format() 返回一个字符串,该字符串是由空格分隔的所有参数的串联。 使用 $util.inspect() 将每个参数转换为字符串。

$util.format(1, 2, 3); // '1 2 3'

如果只有一个参数被传递给 $util.format() ,它会按原样返回,没有任何格式。

$util.format('%% %s'); // '%% %s'

$util.inspect(object[, options])

  • object {any} 任何 JavaScript 原语或对象。

  • 选项 {对象}

    • showHidden {boolean} 如果为 true,则 object 的不可枚举符号和属性将包含在格式化结果中。 默认为false
    • depth {number} 指定格式化object时递归的次数。 这对于检查大型复杂对象很有用。默认为2。 为了让它无限期地递归,传递null
  • colors {boolean} 如果为 true,输出将使用 ANSI 颜色样式代码。 默认为false。 颜色是可自定义的,请参阅 Customizing $util.inspect colorsopen in new window

  • customInspect {boolean} 如果为 false,则不会调用在被检查的object上导出的自定义inspect(depth, opts)函数。默认为true

$util.inspect() 方法返回 object 的字符串表示形式,主要用于调试。 可以传递额外的 options来改变格式化字符串的某些方面。

以下示例检查 $util 对象的所有属性:

console.log($util.inspect($util, \{ showHidden: true, depth: null \}));

值可以提供它们自己的自定义inspect(depth, opts)函数,当调用这些函数时,它们会在递归检查中接收当前的 depth ,以及传递给$util.inspect()的选项对象。

$util.extend(target, source)

  • target {object} 目标构造函数
  • source {object} 要继承的构造函数

将原型方法从一个构造函数继承到另一个构造函数。类似于Node.js中的util.inherits

function SuperClass() {
    this.value = 1;
}

SuperClass.prototype.increment = function() {
    this.value++;
}

$util.extend(ChildClass, SuperClass);

function ChildClass() {
  SuperClass.call(this);
}

ChildClass.prototype.print = function () {
  console.log(this.value);
}


let child = new ChildClass();
child.increment();
child.print();

$util.isArray(object)

稳定性:0 - 已弃用

  • object {any}

Array.isArrayopen in new window 的内部别名。

如果给定的 objectArray,则返回 true。 否则,返回 false

$util.isArray([]);
// Returns: true
$util.isArray(new Array());
// Returns: true
$util.isArray(\{\});
// Returns: false

$util.isBoolean(object)

稳定性:0 - 已弃用

  • object {any}

如果给定的 objectBoolean,则返回 true。 否则,返回 false

$util.isBoolean(1);
// Returns: false
$util.isBoolean(0);
// Returns: false
$util.isBoolean(false);
// Returns: true

$util.isDate(object)

稳定性:0 - 已弃用

  • object {any}

如果给定的 objectDate,则返回 true。 否则,返回 false

$util.isDate(new Date());
// Returns: true
$util.isDate(Date());
// false (without 'new' returns a String)
$util.isDate(\{\});
// Returns: false

$util.isError(object)

稳定性:0 - 已弃用

  • object {any}

如果给定的 objectErroropen in new window,则返回 true。 否则,返回false

$util.isError(new Error());
// Returns: true
$util.isError(new TypeError());
// Returns: true
$util.isError(\{ name: 'Error', message: 'an error occurred' \});
// Returns: false

请注意,此方法依赖于 Object.prototype.toString() 行为。 当 object 参数操作 @@toStringTag 时,可能会获得不正确的结果。

let obj = \{ name: 'Error', message: 'an error occurred' \};

$util.isError(obj);
// Returns: false
obj[Symbol.toStringTag] = 'Error';
$util.isError(obj);
// Returns: true

$util.isFunction(object)

稳定性:0 - 已弃用

  • object {any}

如果给定的 objectFunction,则返回 true。 否则,返回 false

function Foo() \{\}
let Bar = () => \{\};

$util.isFunction(\{\});
// Returns: false
$util.isFunction(Foo);
// Returns: true
$util.isFunction(Bar);
// Returns: true

$util.isNull(object)

稳定性:0 - 已弃用

  • object {any}

如果给定的 object 严格为 null,则返回 true。 否则,返回 false

$util.isNull(0);
// Returns: false
$util.isNull(undefined);
// Returns: false
$util.isNull(null);
// Returns: true

$util.isNullOrUndefined(object)

稳定性:0 - 已弃用

  • object {any}

如果给定的 objectnullundefined,则返回 true。 否则, 返回 false

$util.isNullOrUndefined(0);
// Returns: false
$util.isNullOrUndefined(undefined);
// Returns: true
$util.isNullOrUndefined(null);
// Returns: true

$util.isNumber(object)

稳定性:0 - 已弃用

  • object {any}

如果给定的 objectNumber,则返回 true。 否则,返回 false

$util.isNumber(false);
// Returns: false
$util.isNumber(Infinity);
// Returns: true
$util.isNumber(0);
// Returns: true
$util.isNumber(NaN);
// Returns: true

$util.isObject(object)

稳定性:0 - 已弃用

  • object {any}

如果给定的 object 严格来说是 Object 并且 不是 Function,则返回 true。 否则,返回 false

$util.isObject(5);
// Returns: false
$util.isObject(null);
// Returns: false
$util.isObject(\{\});
// Returns: true
$util.isObject(function() \{\});
// Returns: false

$util.isPrimitive(object)

稳定性:0 - 已弃用

  • object {any}

如果给定的 object 是原始类型,则返回 true。 否则,返回 false

$util.isPrimitive(5);
// Returns: true
$util.isPrimitive('foo');
// Returns: true
$util.isPrimitive(false);
// Returns: true
$util.isPrimitive(null);
// Returns: true
$util.isPrimitive(undefined);
// Returns: true
$util.isPrimitive(\{\});
// Returns: false
$util.isPrimitive(function() \{\});
// Returns: false
$util.isPrimitive(/^$/);
// Returns: false
$util.isPrimitive(new Date());
// Returns: false

$util.isRegExp(object)

稳定性:0 - 已弃用

  • object {any}

如果给定的 objectRegExp,则返回 true。 否则,返回 false

$util.isRegExp(/some regexp/);
// Returns: true
$util.isRegExp(new RegExp('another regexp'));
// Returns: true
$util.isRegExp(\{\});
// Returns: false

$util.isString(object)

稳定性:0 - 已弃用

  • object {any}

如果给定的 objectstring,则返回 true。 否则,返回 false

$util.isString('');
// Returns: true
$util.isString('foo');
// Returns: true
$util.isString(String('foo'));
// Returns: true
$util.isString(5);
// Returns: false

$util.isUndefined(object)

稳定性:0 - 已弃用

  • object {any}

如果给定的 objectundefined,则返回 true。 否则,返回 false

let foo = undefined;
$util.isUndefined(5);
// Returns: false
$util.isUndefined(foo);
// Returns: true
$util.isUndefined(null);
// Returns: false