モジュールユーティリティ
utilモジュールは、データ型の判定、オブジェクト属性のコピー、テンプレート文字列の解析、イベント処理などの実用的なツール機能を提供します。
以下に具体的な紹介と例を示します。
- データ型を決定する -
util.is[type]
このモジュールは、受信パラメータのデータ型を決定するための、などのメソッドを提供します。次に例を示しますisDate
。isRegExp
isError
1
2
3var util = require('util');
console.log(util.isDate(new Date()));
console.log(util.isRegExp(/some regexp/));
- オブジェクト プロパティのコピー -
util.inherits()
このメソッドはオプションで 1 つのコンストラクターを別のコンストラクターから継承できるため、プロトタイプの継承が実装されます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16var util = require('util');
function Animal() {
this.name = 'Animal';
this.sleep = function() {
console.log(this.name + '正在睡觉!');
}
}
Animal.prototype.eat = function(food) {
console.log(this.name + '正在吃:' + food);
};
function Cat() {
this.name = 'cat';
}
util.inherits(Cat, Animal);
Cat
このコンストラクターを使用して、Animal
のインスタンス プロパティとプロトタイプ プロパティを継承し、Cat
インスタンスのプロパティとメソッドを出力します。
1
2
3
4var cat = new Cat();
console.log(cat.name);
console.log(cat.eat('fish'));
console.log(cat.sleep());
- util.format() フォーマットされた出力テンプレート
1
2
3
4
5const util = require('util');
const str1 = util.format('%s:%s', 'foo');
const str2 = util.format('%s:%s', 'foo', 'bar', 'baz');
console.log(str1) // => 'foo:%s'
console.log(str2) // => 'foo:bar baz'
上記はutil
モジュールの一般的なメソッドの一部であり、実際の開発プロセスを簡素化するためによく使用されます。
物体
LruCache
LRU (最も最近使用されていない) キャッシュ オブジェクト。 を参照してください。LruCache物体。
1LruCache util.LruCache;
TextDecoder
TextDecoderデコードオブジェクト、参照TextDecoder物体。
1TextDecoder util.TextDecoder;
TextEncoder
TextEncoderオブジェクトのエンコードについては、を参照してください。TextEncoder物体。
1TextEncoder util.TextEncoder;
types
typesこのモジュールは、データ型を決定するためのツール機能を提供します。
1types util.types;
静的関数
format
指定された形式に従って変数をフォーマットする
1
2static String util.format(String fmt,
...args);
呼び出しパラメータ:
- fmt: 文字列、フォーマット文字列
- args: ...、オプションのパラメータリスト
返される結果:
- String、フォーマットされた文字列を返します
format フォーマット変数
1static String util.format(...args);
呼び出しパラメータ:
- args: ...、オプションのパラメータリスト
返される結果:
- String、フォーマットされた文字列を返します
inherits
あるコンストラクターから別のコンストラクターにプロトタイプ関数を継承します。コンストラクターのプロトタイプは、スーパークラス (superConstructor) から作成された新しいオブジェクトに設定されます。
1
2static util.inherits(Value constructor,
Value superConstructor);
呼び出しパラメータ:
- constructor: 値、初期コンストラクター
- superConstructor: 値、継承されたスーパークラス
inspect
この関数は、主にデバッグに使用される obj の文字列表現を返します。追加のオプションを使用して、書式設定された文字列の特定の側面を変更できます。
1
2static String util.inspect(Value obj,
Object options = {});
呼び出しパラメータ:
- obj: 値、処理するオブジェクトを指定します
- options: オブジェクト、形式制御オプションを指定します
返される結果:
- String、フォーマットされた文字列を返します
次のパラメータがサポートされています。
1
2
3
4
5
6
7
8
9{
"colors": false, // specify if output should be colorized, defaults to false
"depth": 2, // specify the max depth of the output, defaults to 2
"table": false, // specify if output should be a table, defaults to false
"encode_string": true, // specify if string should be encoded, defaults to true
"maxArrayLength": 100, // specify max number of array elements to show, set to 0 or negative to show no elements, defaults to 100
"maxStringLength": 10000, // specify max string length to output, set to 0 or negative to show no strings, defaults to 10000
"fields": [], // specify the fields to be displayed, defaults to all
}
deprecate
指定された関数をカプセル化します。この関数は互換性があるだけであり、警告は出力されません。
1
2
3static Function util.deprecate(Function fn,
String msg,
String code = "");
呼び出しパラメータ:
- fn: カプセル化する必要がある関数を指定した関数
- msg: 文字列、指定された警告メッセージ
- code: 文字列、指定された警告番号
返される結果:
- Function、カプセル化の結果が
isEmpty
指定された変数に値が含まれていない (列挙可能なプロパティがない) かどうかを確認します。
1static Boolean util.isEmpty(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、空の場合は True を返します
isArray
指定された変数が配列であるかどうかを確認します
1static Boolean util.isArray(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、配列の場合は True を返します
isBoolean
指定された変数がブール値であるかどうかをテストします
1static Boolean util.isBoolean(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、ブール値の場合は True を返します
isNull
指定された変数が Null かどうかを確認します
1static Boolean util.isNull(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、Nullの場合はTrueを返します。
isNullOrUndefined
指定された変数がNullか未定義かをチェックします。
1static Boolean util.isNullOrUndefined(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- BooleanNull または Unknown の場合は、True を返します。
isNumber
指定された変数が数値かどうかをテストします
1static Boolean util.isNumber(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、数値の場合は True を返します
isBigInt
指定された変数が BigInt かどうかをテストします
1static Boolean util.isBigInt(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、数値の場合は True を返します
isString
指定された変数が文字列かどうかを確認します
1static Boolean util.isString(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、文字列の場合は True を返します
isUndefined
指定された変数が未定義かどうかを確認します
1static Boolean util.isUndefined(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、未定義の場合は True を返します
isRegExp
指定された変数が通常のオブジェクトかどうかをテストします
1static Boolean util.isRegExp(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、通常のオブジェクトの場合は True を返します
isObject
指定された変数がオブジェクトかどうかをテストします
1static Boolean util.isObject(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、オブジェクトの場合は True を返します
isDate
指定された変数が日付オブジェクトかどうかをテストします
1static Boolean util.isDate(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、日付オブジェクトの場合は True を返します
isNativeError
指定された変数がエラー オブジェクトかどうかをテストします。
1static Boolean util.isNativeError(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、エラーオブジェクトの場合はTrueを返します。
isPrimitive
指定された変数がプリミティブ型であるかどうかを確認します
1static Boolean util.isPrimitive(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、プリミティブ型の場合は True を返します。
isSymbol
指定された変数の型が Symbol であるかどうかを確認します
1static Boolean util.isSymbol(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、シンボル型の場合は True を返します。
isDataView
指定された変数が DataView 型であるかどうかを確認します。
1static Boolean util.isDataView(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、DataView 型の場合は True を返します。
isExternal
指定された変数の型が外部かどうかを確認します。
1static Boolean util.isExternal(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、外部型の場合は True を返します。
isMap
指定された変数が Map 型であるかどうかを確認します
1static Boolean util.isMap(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、Map タイプの場合は True を返します。
isMapIterator
指定された変数が MapIterator 型であるかどうかを確認します
1static Boolean util.isMapIterator(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、MapIterator 型の場合は True を返します。
isPromise
指定された変数が Promise 型であるかどうかを確認します
1static Boolean util.isPromise(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、Promise タイプの場合は True を返します。
isAsyncFunction
指定された変数が AsyncFunction 型であるかどうかを確認します
1static Boolean util.isAsyncFunction(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、AsyncFunction 型の場合は True を返します。
isSet
指定された変数が Set 型であるかどうかを確認します
1static Boolean util.isSet(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、 Set 型の場合は True を返します。
isSetIterator
指定された変数が SetIterator 型であるかどうかを確認します
1static Boolean util.isSetIterator(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- BooleanSetIterator 型の場合、True を返します。
isTypedArray
指定された変数が TypedArray 型であるかどうかを確認します
1static Boolean util.isTypedArray(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、TypedArray 型の場合は True を返します。
isUint8Array
指定された変数が Uint8Array 型であるかどうかを確認します
1static Boolean util.isUint8Array(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、Uint8Array 型の場合は True を返します
isFunction
指定された変数が関数オブジェクトかどうかをテストします
1static Boolean util.isFunction(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、関数オブジェクトの場合は True を返します。
isBuffer
指定された変数が関数かどうかをテストしますBuffer物体
1static Boolean util.isBuffer(Value v);
呼び出しパラメータ:
- v: 検出される変数を指定した値
返される結果:
- Boolean、関数の場合Bufferオブジェクトは True を返します
isDeepEqual
テスト値の深さが期待値と等しい
1
2static Boolean util.isDeepEqual(Value actual,
Value expected);
呼び出しパラメータ:
- actual: 値、テストする値
- expected:値、期待値
返される結果:
- Boolean、深さが等しい場合は True を返します
has
指定されたオブジェクトに指定されたキーが含まれているかどうかを問い合わせます
1
2static Boolean util.has(Value v,
String key);
呼び出しパラメータ:
- v: クエリ対象のオブジェクトを指定した値
- key: 文字列、クエリするキーを指定します
返される結果:
- Boolean、オブジェクトのすべてのキーの配列を返します。
keys
指定されたオブジェクトのすべてのキー配列をクエリします
1static Array util.keys(Value v);
呼び出しパラメータ:
- v: クエリ対象のオブジェクトを指定した値
返される結果:
- Array、オブジェクトのすべてのキーの配列を返します。
values
指定されたオブジェクトのすべての値配列をクエリします。
1static Array util.values(Value v);
呼び出しパラメータ:
- v: クエリ対象のオブジェクトを指定した値
返される結果:
- Array、オブジェクトのすべての値の配列を返します
clone
指定された変数のクローンを作成します。それがオブジェクトまたは配列の場合は、その内容を新しいオブジェクトにコピーします。
1static Value util.clone(Value v);
呼び出しパラメータ:
- v: クローンを作成する変数を指定した値
返される結果:
- Value、クローン結果を返します
deepFreeze
オブジェクトをディープフリーズします。フリーズされたオブジェクトとそれに含まれるオブジェクトは変更できません。
1static util.deepFreeze(Value v);
呼び出しパラメータ:
- v: 値、フリーズするオブジェクトを指定します
extend
1 つ以上のオブジェクトのキー値を指定されたオブジェクトに拡張します
1
2static Value util.extend(Value v,
...objs);
呼び出しパラメータ:
- v: 値、拡張するオブジェクトを指定します
- objs: ...、展開する 1 つ以上のオブジェクトを指定します
返される結果:
- Value、展開された結果を返します
_extend
1 つ以上のオブジェクトのキー値を指定されたオブジェクトに拡張します。これは extend のエイリアスです
1
2static Value util._extend(Value v,
...objs);
呼び出しパラメータ:
- v: 値、拡張するオブジェクトを指定します
- objs: ...、展開する 1 つ以上のオブジェクトを指定します
返される結果:
- Value、展開された結果を返します
pick
を返すobject指定したキーの属性値のみをコピーしてフィルタリングします
1
2static Object util.pick(Value v,
...objs);
呼び出しパラメータ:
- v: 値、フィルターするオブジェクトを指定します
- objs: ...、選択する 1 つ以上のキーを指定します
返される結果:
- Object、フィルタリングされた結果を返します
omit
を返すobject指定したキーの属性値のみを除いてコピーします
1
2static Object util.omit(Value v,
...keys);
呼び出しパラメータ:
- v: 値、フィルターするオブジェクトを指定します
- keys: ...、除外する 1 つ以上のキーを指定します
返される結果:
- Object、除外された結果を返します
first
配列の最初の要素を取得します
1static Value util.first(Value v);
呼び出しパラメータ:
- v: 取得する配列を指定した値
返される結果:
- Value、取得した要素を返します
配列の最初の複数の要素を取得する
1
2static Value util.first(Value v,
Integer n);
呼び出しパラメータ:
- v: 取得する配列を指定した値
- n: 整数、取得する要素の数を指定します
返される結果:
- Value、取得した要素の配列を返します。
last
配列の最後の要素を取得します
1static Value util.last(Value v);
呼び出しパラメータ:
- v: 取得する配列を指定した値
返される結果:
- Value、取得した要素を返します
配列の末尾にある複数の要素を取得する
1
2static Value util.last(Value v,
Integer n);
呼び出しパラメータ:
- v: 取得する配列を指定した値
- n: 整数、取得する要素の数を指定します
返される結果:
- Value、取得した要素の配列を返します。
unique
配列要素の重複排除されたコピーを取得します。
1
2static Array util.unique(Value v,
Boolean sorted = false);
呼び出しパラメータ:
- v: 複製される配列の値
- sorted: ブール値、配列がソートされているかどうかを指定します。配列がソートされている場合は、高速アルゴリズムが使用されます。
返される結果:
- Array、重複した要素を削除した後に配列を返します
union
1 つ以上の配列の値を一意の値を持つ配列に結合します
1static Array util.union(...arrs);
呼び出しパラメータ:
- arrs: ...、結合する 1 つ以上の配列を指定します
返される結果:
- Array、マージされた結果を返します
intersection
1 つ以上の配列要素を除いた arr を含む配列の共通部分を返します。
1static Array util.intersection(...arrs);
呼び出しパラメータ:
- arrs: ...、交差の計算に使用する 1 つ以上の配列を指定します
返される結果:
- Array、交差の計算結果を返します。
flatten
複数レベルのネストを持つ配列 (ネストは任意の数のレベルにすることができます) を 1 レベルのみの配列に変換します。浅いパラメータを渡すと、配列はネストの 1 次元のみに縮小されます。
1
2static Array util.flatten(Value arr,
Boolean shallow = false);
呼び出しパラメータ:
- arr: 値、変換する配列を指定します
- shallow: ブール値、ネストの 1 次元のみを削減するかどうかを指定します。デフォルトは false です。
返される結果:
- Array、変換の結果を返します
without
arr 配列内の 1 つ以上の要素を除く、1 つ以上の要素を含む配列を返します。
1
2static Array util.without(Value arr,
...els);
呼び出しパラメータ:
- arr: 値、除外する配列を指定します
- els: ...、除外する 1 つ以上の要素を指定します
返される結果:
- Array、除外された結果を返します
difference
arr 配列内の要素を含む配列を返します。ただし、配列要素のないものは除きます。
1
2static Array util.difference(Array list,
...arrs);
呼び出しパラメータ:
- list: 配列、除外する配列を指定します
- arrs: ...、除外する 1 つ以上の配列を指定します
返される結果:
- Array、除外された結果を返します
each
リスト内のすべての要素を走査し、各要素を順番に出力します。 context パラメータが渡されると、イテレータは context オブジェクトにバインドされます。イテレータが呼び出されるたびに、3 つのパラメータ (要素、インデックス、リスト) が渡されます。
1
2
3static Value util.each(Value list,
Function iterator,
Value context = undefined);
呼び出しパラメータ:
- list: 値。走査するリストまたはオブジェクトを指定します。
- iterator: 関数。トラバーサルに使用されるコールバック関数を指定します。
- context: 値。イテレータを呼び出すときにバインドされるコンテキスト オブジェクトを指定します。
返される結果:
- Value、リスト自体を返します
map
リスト内の各値は、変換関数 (反復子) を通じて新しい配列にマップされます。 context パラメータが渡されると、イテレータは context オブジェクトにバインドされます。イテレータが呼び出されるたびに、3 つのパラメータ (要素、インデックス、リスト) が渡されます。
1
2
3static Array util.map(Value list,
Function iterator,
Value context = undefined);
呼び出しパラメータ:
- list: 値。変換するリストまたはオブジェクトを指定します。
- iterator: 関数、変換に使用されるコールバック関数を指定します
- context: 値。イテレータを呼び出すときにバインドされるコンテキスト オブジェクトを指定します。
返される結果:
- Array、変換の結果を返します
reduce
リスト内の要素を単一の値に減らします。 context パラメータが渡されると、イテレータは context オブジェクトにバインドされます。イテレータが呼び出されるたびに、3 つのパラメータ (メモ、要素、インデックス、リスト) が渡されます。
1
2
3
4static Value util.reduce(Value list,
Function iterator,
Value memo,
Value context = undefined);
呼び出しパラメータ:
- list: 値。要約するリストまたはオブジェクトを指定します。
- iterator: 関数、解決に使用されるコールバック関数を指定します
- memo: 値、リダクションの初期値を指定します
- context: 値。イテレータを呼び出すときにバインドされるコンテキスト オブジェクトを指定します。
返される結果:
- Value、要約された結果を返します
parseArgs
コマンドライン文字列を解析し、パラメータリストを返します。
1static NArray util.parseArgs(String command);
呼び出しパラメータ:
- command: String、解析するコマンドライン文字列を指定します。
返される結果:
- NArray、解析されたパラメータのリストを返します。
compile
スクリプトをバイナリコードにコンパイルします
1
2
3static Buffer util.compile(String srcname,
String script,
Integer mode = 0);
呼び出しパラメータ:
- srcname: 文字列、追加するスクリプトの名前を指定します
- script: 文字列、コンパイルするスクリプト コードを指定します。
- mode: 整数、コンパイル モード、0: モジュール、1: スクリプト、2: ワーカー、デフォルトは 0
返される結果:
- Buffer、コンパイルされたバイナリコードを返します
util.compileスクリプトは、v8 内部実行データ ブロック (マシン以外で実行可能なコード) にコンパイルできます。コンパイルされたコードは、*.jsc として保存した後、run および require によって直接ロードして実行できます。
コンパイル後、ターゲット コードはソース コードを逆に取得することができないため、Function.toString に依存するプログラムは正しく動作しません。
sync
コールバック関数または非同期関数をラップして同期的に呼び出す
1
2static Function util.sync(Function func,
Boolean async_func = false);
呼び出しパラメータ:
- func: ラップする必要がある関数を指定した関数
- async_func: Boolean、func を非同期関数として処理することを指定します false の場合は自動判定されます。
返される結果:
- Function、同期的に実行される関数を返します。
util.sync呼び出しを容易にするために、コールバック関数または非同期関数を同期関数に処理します。
コールバックの例は次のとおりです。
1
2
3
4
5
6
7
8
9
10
11// callback
var util = require('util');
function cb_test(a, b, cb) {
setTimeout(() => {
cb(null, a + b);
}, 100);
}
var fn_sync = util.sync(cb_test);
console.log(fn_sync(100, 200));
非同期の例は次のとおりです。
1
2
3
4
5
6
7
8
9// async/await
var util = require('util');
async function async_test(a, b) {
return a + b;
}
var fn_sync = util.sync(async_test);
console.log(fn_sync(100, 200));
非同期としてマークされていない Promise を返す関数の場合、同期モードを手動で指定できます。
1
2
3
4
5
6
7
8
9
10
11// async/await
var util = require('util');
function async_test(a, b) {
return new Promise(function(resolve, reject) {
resolve(a + b);
});
}
var fn_sync = util.sync(async_test, true);
console.log(fn_sync(100, 200));
promisify
非同期呼び出し用のラップコールバック関数
1static Function util.promisify(Function func);
呼び出しパラメータ:
- func: ラップする必要がある関数を指定した関数
返される結果:
- Function、非同期関数を返します
util.promisify呼び出しを容易にするために、コールバック関数を非同期関数として処理します。
コールバックの例は次のとおりです。
1
2
3
4
5
6
7
8
9
10
11// callback
var util = require('util');
function cb_test(a, b, cb) {
setTimeout(() => {
cb(null, a + b);
}, 100);
}
var fn_sync = util.promisify(cb_test);
console.log(async fn_sync(100, 200));
callbackify
コールバック呼び出し用の非同期関数をラップする
1static Function util.callbackify(Function func);
呼び出しパラメータ:
- func: ラップする必要がある関数を指定した関数
返される結果:
- Function、コールバック関数を返す
util.callbackify呼び出しを容易にするために、非同期関数をコールバック関数に処理します。
非同期の例は次のとおりです。
1
2
3
4
5
6
7
8
9
10
11
12// async
var util = require('util');
async function async_test(a, b) {
return a + b;
}
var fn_callback = util.callbackify(async_test);
fn_callback(100, 200, (err, result) => {
console.log(result);
});
buildInfo
現在のエンジンとコンポーネントのバージョン情報を照会します。
1static Object util.buildInfo();
返される結果:
- Object、コンポーネントのバージョンオブジェクトを返します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24{
"fibjs": "0.25.0",
"clang": "9.1",
"date": "Jun 12 2018 07:22:40",
"vender": {
"ev": "4.24",
"expat": "2.2.5",
"gd": "2.2.4",
"jpeg": "8.3",
"leveldb": "1.17",
"mongo": "0.7",
"pcre": "8.21",
"png": "1.5.4",
"mbedtls": "2.6.1",
"snappy": "1.1.2",
"sqlite": "3.23.0",
"tiff": "3.9.5",
"uuid": "1.6.2",
"v8": "6.7.288.20",
"v8-snapshot": true,
"zlib": "1.2.7",
"zmq": "3.1"
}
}