Spec-Zone.ru › Node.js 12 LTS

Util

Устойчивость: 2 - Стабильно

Исходный код: lib/util.js

Модуль util поддерживает потребности внутренних API Node.js. Многие утилиты также полезны для разработчиков приложений и модулей. Для доступа к нему:

const util = require('util');

util.callbackify(original)

Добавлен в: v8.2.0
  • original <Функция> Функция async
  • Возвращает: <Функция> функция в стиле обратного вызова

Принимает функцию async (или функцию, возвращающую Promise) и возвращает функцию, следующую стилю обратного вызова «ошибка-сначала», т. е. принимающую обратный вызов (err, value) => ... в качестве последнего аргумента. В обратном вызове первым аргументом будет причина отклонения (или null, если Promise разрешен), а вторым — разрешенное значение.

const util = require('util');

async function fn() {
  return 'hello world';
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  if (err) throw err;
  console.log(ret);
});

Выведет:

hello world

Обратный вызов выполняется асинхронно и будет иметь ограниченный стек отслеживания. Если обратный вызов вызывает исключение, процесс будет испускать событие 'uncaughtException', и если оно не будет обработано, выйдет из строя.

Так как null имеет особое значение в качестве первого аргумента обратного вызова, если обернутая функция отклоняет Promise с ложным значением в качестве причины, значение оборачивается в Error с исходным значением, хранящимся в поле с именем reason.

function fn() {
  return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);

callbackFunction((err, ret) => {
  // When the Promise was rejected with `null` it is wrapped with an Error and
  // the original value is stored in `reason`.
  err && err.hasOwnProperty('reason') && err.reason === null;  // true
});

util.debuglog(section[, callback])

Добавлен в: v0.11.3
  • section <строка> Строка, идентифицирующая часть приложения, для которой создаётся функция debuglog
  • callback <Функция> Обратный вызов, вызываемый в первый раз, когда функция регистрации вызывается с аргументом функции, представляющим более оптимизированную функцию регистрации.
  • Возвращает: <Функция> Функция регистрации

Метод util.debuglog() используется для создания функции, которая условно записывает сообщения отладки в stderr в зависимости от наличия переменной среды NODE_DEBUG. Если имя section появляется в значении этой переменной среды, то возвращаемая функция работает аналогично console.error(). В противном случае возвращаемая функция является недействующей операцией.

const util = require('util');
const debuglog = util.debuglog('foo');

debuglog('hello from foo [%d]', 123);

Если эта программа запущена с NODE_DEBUG=foo в среде, то она выведет что-то вроде:

FOO 3245: hello from foo [123]

где 3245 — идентификатор процесса. Если она запущена без указанной переменной среды, то ничего не выведется.

section поддерживает также подстановочные знаки:

const util = require('util');
const debuglog = util.debuglog('foo-bar');

debuglog('hi there, it\'s foo-bar [%d]', 2333);

если она запущена с NODE_DEBUG=foo* в среде, то она выведет что-то вроде:

FOO-BAR 3257: hi there, it's foo-bar [2333]

В переменной среды NODE_DEBUG могут быть указаны несколько разделенных запятыми имён section: NODE_DEBUG=fs,net,tls.

Дополнительный аргумент callback может быть использован для замены функции регистрации на другую функцию, не имеющую инициализации или ненужной обертки.

const util = require('util');
let debuglog = util.debuglog('internals', (debug) => {
  // Replace with a logging function that optimizes out
  // testing if the section is enabled
  debuglog = debug;
});

util.deprecate(fn, msg[, code])

История
Версия Изменения
v10.0.0

Предупреждения об устаревании выводятся только один раз для каждого кода.

v0.8.0

Добавлен в: v0.8.0

  • fn <Функция> Функция, которая устаревает.
  • msg <строка> Сообщение об предупреждении, которое отображается при вызове устаревшей функции.
  • code <строка> Код устаревания. См. список устаревших API для получения списка кодов.
  • Возвращает: <Функция> Устаревшая функция, обернутая для вывода предупреждения.

Метод util.deprecate() оборачивает fn (которое может быть функцией или классом) таким образом, что оно отмечается как устаревшее.

const util = require('util');

exports.obsoleteFunction = util.deprecate(() => {
  // Do something here.
}, 'obsoleteFunction() is deprecated. Use newShinyFunction() instead.');

При вызове util.deprecate() вернёт функцию, которая выведет DeprecationWarning с помощью события 'warning'. Предупреждение будет выведено и напечатано в stderr в первый раз при вызове возвращаемой функции. После вывода предупреждения обернутая функция вызывается без вывода предупреждения.

Если один и тот же необязательный code указан в нескольких вызовах util.deprecate(), предупреждение будет выведено только один раз для этого code.

const util = require('util');

const fn1 = util.deprecate(someFunction, someMessage, 'DEP0001');
const fn2 = util.deprecate(someOtherFunction, someOtherMessage, 'DEP0001');
fn1(); // Emits a deprecation warning with code DEP0001
fn2(); // Does not emit a deprecation warning because it has the same code

Если используются командные строки --no-deprecation или --no-warnings, или если свойство process.noDeprecation установлено в значение true *до* первого предупреждения об устаревании, метод util.deprecate() ничего не делает.

Если установлены командные строки --trace-deprecation или --trace-warnings, или свойство process.traceDeprecation установлено в true, предупреждение и стек отслеживания печатаются в stderr при первом вызове устаревшей функции.

Если установлена командная строка --throw-deprecation или свойство process.throwDeprecation установлено в true, при вызове устаревшей функции будет выброшено исключение.

Командная строка --throw-deprecation и свойство process.throwDeprecation имеют приоритет над --trace-deprecation и process.traceDeprecation.

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

История
Версия Изменения
v12.11.0

Спецификатор %c игнорируется.

v12.0.0

Аргумент format теперь принимается только в том случае, если он действительно содержит спецификаторы формата.

v12.0.0

Если аргумент format не является строкой формата, форматирование строки вывода больше не зависит от типа первого аргумента. Это изменение удаляет ранее присутствовавшие кавычки из строк, которые выводились, когда первый аргумент не был строкой.

v11.4.0

Спецификаторы %d, %f и %i теперь правильно поддерживают Символы.

v11.4.0

Спецификатор %o теперь имеет глубину по умолчанию 4.

v11.0.0

Опция depth спецификатора %o теперь будет использовать глубину по умолчанию.

v10.12.0

Спецификаторы %d и %i теперь поддерживают BigInt.

v8.4.0

Спецификаторы %o и %O теперь поддерживаются.

v0.5.3

Добавлен в: v0.5.3

  • format <строка> Строка формата, похожая на printf.

Метод util.format() возвращает отформатированную строку, используя первый аргумент в качестве строки формата, похожей на printf, которая может содержать ноль или более спецификаторов формата. Каждый спецификатор заменяется преобразованным значением соответствующего аргумента. Поддерживаемые спецификаторы:

  • %s: String будет использоваться для преобразования всех значений, кроме BigInt, Object и -0. Значения BigInt будут представлены с n, а объекты, у которых нет пользовательской функции toString, проверяются с помощью util.inspect() с параметрами { depth: 0, colors: false, compact: 3 }.
  • %d: Number будет использоваться для преобразования всех значений, кроме BigInt и Symbol.
  • %i: parseInt(value, 10) используется для всех значений, кроме BigInt и Symbol.
  • %f: parseFloat(value) используется для всех значений, кроме Symbol.
  • %j: JSON. Заменяется строкой '[Circular]', если аргумент содержит циклические ссылки.
  • %o: Object. Строковое представление объекта с общим JavaScript-форматом отображения объекта. Аналогично util.inspect() с параметрами { showHidden: true, showProxy: true }. Это покажет весь объект, включая неперечисляемые свойства и прокси.
  • %O: Object. Строковое представление объекта с общим JavaScript-форматом отображения объекта. Аналогично util.inspect() без параметров. Это покажет весь объект, не включая неперечисляемые свойства и прокси.
  • %c: CSS. Этот спецификатор игнорируется и пропустит любой переданный CSS.
  • %%: одинарный знак процента ('%'). Это не потребляет аргумент.
  • Возвращает: <строка> отформатированная строка

Если у спецификатора нет соответствующего аргумента, он не заменяется:

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

Значения, которые не являются частью строки формата, отформатированы с помощью util.inspect(), если их тип не string.

Если аргументов, переданных в метод util.format(), больше, чем количество спецификаторов, дополнительные аргументы конкатенируются со возвращаемой строкой, разделённые пробелами:

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

Если первый аргумент не содержит допустимого спецификатора формата, util.format() возвращает строку, являющуюся конкатенацией всех аргументов, разделённых пробелами:

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

Если передан только один аргумент в util.format(), он возвращается как есть без форматирования:

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

util.format() — это синхронный метод, предназначенный для отладки. Некоторые значения входных данных могут значительно снизить производительность, блокируя цикл событий. Используйте эту функцию с осторожностью и никогда не используйте в горячих точках кода.

util.formatWithOptions(inspectOptions, format[, ...args])

Добавлен в: v10.0.0
  • inspectOptions <Объект>
  • format <строка>

Эта функция идентична util.format(), за исключением того, что она принимает аргумент inspectOptions, который задаёт параметры, передаваемые в util.inspect().

util.formatWithOptions({ colors: true }, 'See object %O', { foo: 42 });
// Returns 'See object { foo: 42 }', where `42` is colored as a number
// when printed to a terminal.

util.getSystemErrorName(err)

Добавлен в: v9.7.0
  • err <число>
  • Возвращает: <строка>

Возвращает строковое имя для числового кода ошибки, полученного из Node.js API. Сопоставление между кодами ошибок и именами ошибок зависит от платформы. См. Общие системные ошибки для имен распространённых ошибок.

fs.access('file/that/does/not/exist', (err) => {
  const name = util.getSystemErrorName(err.errno);
  console.error(name);  // ENOENT
});

util.inherits(constructor, superConstructor)

История
Версия Изменения
v5.0.0

Параметр constructor теперь может ссылаться на класс ES6.

v0.3.0

Добавлен в: v0.3.0

  • constructor <Функция>
  • superConstructor <Функция>

Использование util.inherits() не рекомендуется. Пожалуйста, используйте ключевые слова ES6 class и extends для получения поддержки наследования на уровне языка. Также обратите внимание, что два стиля семантически несовместимы.

Наследует методы прототипа от одного конструктора в другой. Прототип constructor будет установлен на новый объект, созданный из superConstructor.

Это в основном добавляет некоторую валидацию входных данных поверх Object.setPrototypeOf(constructor.prototype, superConstructor.prototype). Для дополнительного удобства superConstructor будет доступен через свойство constructor.super_.

const util = require('util');
const EventEmitter = require('events');

function MyStream() {
  EventEmitter.call(this);
}

util.inherits(MyStream, EventEmitter);

MyStream.prototype.write = function(data) {
  this.emit('data', data);
};

const stream = new MyStream();

console.log(stream instanceof EventEmitter); // true
console.log(MyStream.super_ === EventEmitter); // true

stream.on('data', (data) => {
  console.log(`Received data: "${data}"`);
});
stream.write('It works!'); // Received data: "It works!"

Пример ES6 с использованием class и extends.

const EventEmitter = require('events');

class MyStream extends EventEmitter {
  write(data) {
    this.emit('data', data);
  }
}

const stream = new MyStream();

stream.on('data', (data) => {
  console.log(`Received data: "${data}"`);
});
stream.write('With ES6');

util.inspect(object[, options])

util.inspect(object[, showHidden[, depth[, colors]]])

История
Версия Изменения
v14.6.0, v12.19.0

Если object из другого vm.Context, пользовательская функция инспекции не будет получать контекстно-специфические аргументы.

v12.17.0

Теперь поддерживается параметр maxStringLength.

v12.16.0

Пользовательские свойства прототипа инспектируются, если showHidden равно true.

v12.0.0

Значение по умолчанию для compact изменено на 3, а значение по умолчанию для breakLength изменено на 80.

v12.0.0

Внутренние свойства больше не отображаются в аргументе контекста пользовательской функции инспекции.

v11.11.0

Параметр compact принимает числа для нового режима вывода.

v11.7.0

Теперь ArrayBuffers также показывают своё двоичное содержимое.

v11.5.0

Теперь поддерживается параметр getters.

v11.4.0

Значение по умолчанию для depth изменено обратно на 2.

v11.0.0

Значение по умолчанию для depth изменено на 20.

v11.0.0

Выводимая информация об инспекции теперь ограничена примерно 128 МБ. Данные больше этого размера не будут полностью инспектироваться.

v10.12.0

Теперь поддерживается параметр sorted.

v10.6.0

Теперь можно инспектировать связанные списки и аналогичные объекты до максимального размера стека вызовов.

v10.0.0

Теперь можно инспектировать также элементы WeakMap и WeakSet.

v9.9.0

Теперь поддерживается параметр compact.

v6.6.0

Теперь пользовательские функции инспекции могут возвращать this.

v6.3.0

Теперь поддерживается параметр breakLength.

v6.1.0

Теперь поддерживается параметр maxArrayLength; в частности, длинные массивы обрезаются по умолчанию.

v6.1.0

Теперь поддерживается параметр showProxy.

v0.3.0

Добавлен в: v0.3.0

  • object <any> Любой примитив JavaScript или Object.
  • options <Object>
    • showHidden <boolean> Если true, неперечисляемые символы и свойства object включены в отформатированный результат. WeakMap и WeakSet записи также включены, а также пользовательские свойства прототипов (исключая свойства методов). По умолчанию: false.
    • depth <number> Указывает количество рекурсий при форматировании object. Это полезно для проверки больших объектов. Чтобы рекурсировать до максимального размера стека вызовов, передайте Infinity или null. По умолчанию: 2.
    • colors <boolean> Если true, вывод стилизован с помощью кодов ANSI для цвета. Цвета настраиваются. См. Настройка util.inspect цветов. По умолчанию: false.
    • customInspect <boolean> Если false, функции [util.inspect.custom](depth, opts) не вызываются. По умолчанию: true.
    • showProxy <boolean> Если true, инспекция Proxy включает объекты target и handler. По умолчанию: false.
    • maxArrayLength <integer> Указывает максимальное количество Array, TypedArray, WeakMap и WeakSet элементов для включения при форматировании. Установите null или Infinity, чтобы отобразить все элементы. Установите 0 или отрицательное значение, чтобы не отображать элементы. По умолчанию: 100.
    • maxStringLength <integer> Указывает максимальное количество символов для включения при форматировании. Установите null или Infinity, чтобы отобразить все элементы. Установите 0 или отрицательное значение, чтобы не отображать символы. По умолчанию: Infinity.
    • breakLength <integer> Длина, при которой входные значения разбиваются на несколько строк. Установите Infinity для форматирования входных данных в одну строку (в сочетании с compact установленным на true или любое число ≥ 1). По умолчанию: 80.
    • compact <boolean> | <integer> Установка этого значения в false приводит к отображению каждого ключа объекта на новой строке. Также будут добавлены новые строки для текста, длина которого превышает breakLength. Если задано число, то самые n внутренние элементы объединяются в одну строку, если все свойства помещаются в breakLength. Короткие элементы массива также группируются. Текст не будет сокращен ниже 16 символов, независимо от размера breakLength. Дополнительная информация представлена в примере ниже. По умолчанию: 3.
    • sorted <boolean> | <Function> Если установлено значение true или функция, все свойства объекта, и Set и Map записи сортируются в результирующей строке. Если установлено значение true, используется стандартная сортировка. Если задана функция, она используется как функция сравнения.
    • getters <boolean> | <string> Если установлено значение true, проверяются геттеры. Если установлено значение 'get', проверяются только геттеры без соответствующего сеттера. Если установлено значение 'set', проверяются только геттеры с соответствующим сеттером. Это может вызвать побочные эффекты в зависимости от функции геттера. По умолчанию: false.
  • Возвращает: <string> Представление object.

Метод util.inspect() возвращает строковое представление object, предназначенное для отладки. Вывод util.inspect может изменяться в любое время и не должен использоваться в программировании. Дополнительные options могут быть переданы для изменения результата. util.inspect() будет использовать имя конструктора и/или @@toStringTag для создания идентифицирующей метки проверяемого значения.

class Foo {
  get [Symbol.toStringTag]() {
    return 'bar';
  }
}

class Bar {}

const baz = Object.create(null, { [Symbol.toStringTag]: { value: 'foo' } });

util.inspect(new Foo()); // 'Foo [bar] {}'
util.inspect(new Bar()); // 'Bar {}'
util.inspect(baz);       // '[foo] {}'

Циклические ссылки отображаются как '[Circular]':

const { inspect } = require('util');

const obj = {};
obj.a = [obj];
obj.b = {};
obj.b.inner = obj.b;
obj.b.obj = obj;

console.log(inspect(obj));
// {
//   a: [ [Circular] ],
//   b: { inner: [Circular], obj: [Circular] }
// }

Следующий пример проверяет все свойства объекта util:

const util = require('util');

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

Следующий пример демонстрирует эффект опции compact:

const util = require('util');

const o = {
  a: [1, 2, [[
    'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do ' +
      'eiusmod tempor incididunt ut labore et dolore magna aliqua.',
    'test',
    'foo']], 4],
  b: new Map([['za', 1], ['zb', 'test']])
};
console.log(util.inspect(o, { compact: true, depth: 5, breakLength: 80 }));

// { a:
//   [ 1,
//     2,
//     [ [ 'Lorem ipsum dolor sit amet, consectetur [...]', // A long line
//           'test',
//           'foo' ] ],
//     4 ],
//   b: Map { 'za' => 1, 'zb' => 'test' } }

// Setting `compact` to false changes the output to be more reader friendly.
console.log(util.inspect(o, { compact: false, depth: 5, breakLength: 80 }));

// {
//   a: [
//     1,
//     2,
//     [
//       [
//         'Lorem ipsum dolor sit amet, consectetur ' +
//           'adipiscing elit, sed do eiusmod tempor ' +
//           'incididunt ut labore et dolore magna ' +
//           'aliqua.,
//         'test',
//         'foo'
//       ]
//     ],
//     4
//   ],
//   b: Map {
//     'za' => 1,
//     'zb' => 'test'
//   }
// }

// Setting `breakLength` to e.g. 150 will print the "Lorem ipsum" text in a
// single line.
// Reducing the `breakLength` will split the "Lorem ipsum" text in smaller
// chunks.

Опция showHidden позволяет проверять записи WeakMap и WeakSet. Если записей больше, чем maxArrayLength, нет гарантии, какие записи будут отображены. Это означает, что повторное получение тех же записей WeakSet может привести к разному выводу. Кроме того, записи без оставшихся сильных ссылок могут быть удалены из памяти в любое время.

const { inspect } = require('util');

const obj = { a: 1 };
const obj2 = { b: 2 };
const weakSet = new WeakSet([obj, obj2]);

console.log(inspect(weakSet, { showHidden: true }));
// WeakSet { { a: 1 }, { b: 2 } }

Опция sorted гарантирует, что порядок вставки свойств объекта не повлияет на результат util.inspect().

const { inspect } = require('util');
const assert = require('assert');

const o1 = {
  b: [2, 3, 1],
  a: '`a` comes before `b`',
  c: new Set([2, 3, 1])
};
console.log(inspect(o1, { sorted: true }));
// { a: '`a` comes before `b`', b: [ 2, 3, 1 ], c: Set { 1, 2, 3 } }
console.log(inspect(o1, { sorted: (a, b) => b.localeCompare(a) }));
// { c: Set { 3, 2, 1 }, b: [ 2, 3, 1 ], a: '`a` comes before `b`' }

const o2 = {
  c: new Set([2, 1, 3]),
  a: '`a` comes before `b`',
  b: [2, 3, 1]
};
assert.strict.equal(
  inspect(o1, { sorted: true }),
  inspect(o2, { sorted: true })
);

util.inspect() — это синхронный метод, предназначенный для отладки. Максимальная длина вывода составляет примерно 128 МБ. Входы, приводящие к более длинному выводу, будут усечены.

Настройка цветов util.inspect

Вывод цвета (если включен) util.inspect настраивается глобально через свойства util.inspect.styles и util.inspect.colors.

util.inspect.styles — это отображение, связывающее имя стиля с цветом из util.inspect.colors.

Стандартные стили и соответствующие цвета:

  • bigint: yellow
  • boolean: yellow
  • date: magenta
  • module: underline
  • name: (нет стилизации)
  • null: bold
  • number: yellow
  • regexp: red
  • special: cyan (например, Proxies)
  • string: green
  • symbol: green
  • undefined: grey

Стиль цвета использует коды ANSI, которые могут быть не поддерживаемыми всеми терминалами. Чтобы проверить поддержку цвета, используйте tty.hasColors().

Предопределенные управляющие коды перечислены ниже (сгруппированы как «Модификаторы», «Цвета переднего плана» и «Цвета заднего плана»).

Модификаторы

Поддержка модификаторов варьируется в разных терминалах. Они в основном будут игнорироваться, если не поддерживаются.

  • reset — Сбрасывает все (цветные) модификаторы до их значений по умолчанию
  • полужирный — Сделать текст полужирным
  • курсивный — Сделать текст курсивным
  • подчеркнутый — Подчеркнуть текст
  • зачеркнутый — Проводит горизонтальную линию посередине текста (Псевдоним: strikeThrough, crossedout, crossedOut)
  • hidden — Выводит текст, но делает его невидимым (Псевдоним: скрыть)
  • приглушенный — Уменьшение интенсивности цвета (Псевдоним: faint)
  • перечеркнутый — Надчеркнуть текст
  • мигание — Скрывает и отображает текст с интервалом
  • инверсия — Переключает цвета переднего и заднего плана (Псевдоним: swapcolors, swapColors)
  • двойное подчеркивание — Сделать текст с двойным подчеркиванием (Псевдоним: doubleUnderline)
  • рамка — Отобразить рамку вокруг текста

Цвета переднего плана

  • black
  • red
  • green
  • yellow
  • blue
  • magenta
  • cyan
  • white
  • gray (псевдоним: grey, blackBright)
  • redBright
  • greenBright
  • yellowBright
  • blueBright
  • magentaBright
  • cyanBright
  • whiteBright

Цвета заднего плана

  • bgBlack
  • bgRed
  • bgGreen
  • bgYellow
  • bgBlue
  • bgMagenta
  • bgCyan
  • bgWhite
  • bgGray (псевдоним: bgGrey, bgBlackBright)
  • bgRedBright
  • bgGreenBright
  • bgYellowBright
  • bgBlueBright
  • bgMagentaBright
  • bgCyanBright
  • bgWhiteBright

Настраиваемые функции проверки объектов

Объекты также могут определять собственную функцию [util.inspect.custom](depth, opts), которая util.inspect() будет вызвана и результат которой будет использован при проверке объекта:

const util = require('util');

class Box {
  constructor(value) {
    this.value = value;
  }

  [util.inspect.custom](depth, options) {
    if (depth < 0) {
      return options.stylize('[Box]', 'special');
    }

    const newOptions = Object.assign({}, options, {
      depth: options.depth === null ? null : options.depth - 1
    });

    // Five space padding because that's the size of "Box< ".
    const padding = ' '.repeat(5);
    const inner = util.inspect(this.value, newOptions)
                      .replace(/\n/g, `\n${padding}`);
    return `${options.stylize('Box', 'special')}< ${inner} >`;
  }
}

const box = new Box(true);

util.inspect(box);
// Returns: "Box< true >"

Настраиваемые функции проверки обычно возвращают строку, но могут возвращать значение любого типа, которое будет отформатировано соответствующим образом функцией util.inspect().

const util = require('util');

const obj = { foo: 'this will not show up in the inspect() output' };
obj[util.inspect.custom] = (depth) => {
  return { bar: 'baz' };
};

util.inspect(obj);
// Returns: "{ bar: 'baz' }"

util.inspect.custom

История
Версия Изменения
v10.12.0

Теперь определяется как общий символ.

v6.6.0

Добавлен в: v6.6.0

  • <символ>, который можно использовать для объявления настраиваемых функций проверки.

Помимо доступности через util.inspect.custom, этот символ зарегистрирован глобально и может быть доступен в любой среде как Symbol.for('nodejs.util.inspect.custom').

const inspect = Symbol.for('nodejs.util.inspect.custom');

class Password {
  constructor(value) {
    this.value = value;
  }

  toString() {
    return 'xxxxxxxx';
  }

  [inspect]() {
    return `Password <${this.toString()}>`;
  }
}

const password = new Password('r0sebud');
console.log(password);
// Prints Password <xxxxxxxx>

См. Настраиваемые функции проверки объектов для получения более подробной информации.

util.inspect.defaultOptions

Добавлен в: v6.4.0

Значение defaultOptions позволяет настроить параметры по умолчанию, используемые util.inspect. Это полезно для функций, таких как console.log или util.format, которые неявно вызывают util.inspect. Оно должно быть установлено в объект, содержащий один или несколько допустимых util.inspect() опций. Также поддерживается прямое задание свойств опций.

const util = require('util');
const arr = Array(101).fill(0);

console.log(arr); // Logs the truncated array
util.inspect.defaultOptions.maxArrayLength = null;
console.log(arr); // logs the full array

util.isDeepStrictEqual(val1, val2)

Добавлен в: v9.0.0
  • val1 <любое>
  • val2 <любое>
  • Возвращает: <логическое>

Возвращает true , если между val1 и val2 существует глубокое строгое равенство. В противном случае, возвращает false.

См. assert.deepStrictEqual() для получения дополнительной информации о глубоком строгом равенстве.

util.promisify(original)

Добавлен в: v8.0.0
  • original <Функция>
  • Возвращает: <Функция>

Принимает функцию, следующую общему стилю обратного вызова с ошибкой в первую очередь, т.е. принимающую (err, value) => ... коллбэк в качестве последнего аргумента, и возвращает версию, возвращающую обещания.

const util = require('util');
const fs = require('fs');

const stat = util.promisify(fs.stat);
stat('.').then((stats) => {
  // Do something with `stats`
}).catch((error) => {
  // Handle the error.
});

Или, аналогично, используя async function:

const util = require('util');
const fs = require('fs');

const stat = util.promisify(fs.stat);

async function callStat() {
  const stats = await stat('.');
  console.log(`This directory is owned by ${stats.uid}`);
}

Если свойство original[util.promisify.custom] присутствует, promisify вернет его значение, см. Настраиваемые функции, преобразованные в обещания.

promisify() предполагает, что original является функцией, принимающей коллбэк в качестве последнего аргумента во всех случаях. Если original не является функцией, promisify() выбросит ошибку. Если original является функцией, но ее последний аргумент не является коллбэком с ошибкой в первую очередь, ей все равно будет передан коллбэк с ошибкой в первую очередь в качестве последнего аргумента.

Использование promisify() для методов класса или других методов, использующих this может не работать так, как ожидается, если не обработано специально:

const util = require('util');

class Foo {
  constructor() {
    this.a = 42;
  }

  bar(callback) {
    callback(null, this.a);
  }
}

const foo = new Foo();

const naiveBar = util.promisify(foo.bar);
// TypeError: Cannot read property 'a' of undefined
// naiveBar().then(a => console.log(a));

naiveBar.call(foo).then((a) => console.log(a)); // '42'

const bindBar = naiveBar.bind(foo);
bindBar().then((a) => console.log(a)); // '42'

Настраиваемые функции, преобразованные в обещания

Используя символ util.promisify.custom можно переопределить возвращаемое значение функции util.promisify():

const util = require('util');

function doSomething(foo, callback) {
  // ...
}

doSomething[util.promisify.custom] = (foo) => {
  return getPromiseSomehow();
};

const promisified = util.promisify(doSomething);
console.log(promisified === doSomething[util.promisify.custom]);
// prints 'true'

Это может быть полезно в тех случаях, когда исходная функция не следует стандартному формату, принимая коллбэк с ошибкой в первую очередь в качестве последнего аргумента.

Например, с функцией, которая принимает (foo, onSuccessCallback, onErrorCallback):

doSomething[util.promisify.custom] = (foo) => {
  return new Promise((resolve, reject) => {
    doSomething(foo, resolve, reject);
  });
};

Если promisify.custom определено, но не является функцией, promisify() выбросит ошибку.

util.promisify.custom

История
Версия Изменения
v12.16.2

Теперь определяется как общий символ.

v8.0.0

Добавлен в: v8.0.0

  • <символ>, который можно использовать для объявления настраиваемых вариантов функций, преобразованных в обещания, см. Настраиваемые функции, преобразованные в обещания.

Помимо доступности через util.promisify.custom, этот символ зарегистрирован глобально и может быть доступен в любой среде как Symbol.for('nodejs.util.promisify.custom').

Например, с функцией, которая принимает (foo, onSuccessCallback, onErrorCallback):

const kCustomPromisifiedSymbol = Symbol.for('nodejs.util.promisify.custom');

doSomething[kCustomPromisifiedSymbol] = (foo) => {
  return new Promise((resolve, reject) => {
    doSomething(foo, resolve, reject);
  });
};

Класс: util.TextDecoder

Добавлен в: v8.3.0

Реализация стандарта кодирования WHATWG TextDecoder API.

const decoder = new TextDecoder('shift_jis');
let string = '';
let buffer;
while (buffer = getNextChunkSomehow()) {
  string += decoder.decode(buffer, { stream: true });
}
string += decoder.decode(); // end-of-stream

Поддерживаемые кодировки WHATWG

В соответствии со стандартом кодирования WHATWG, кодировки, поддерживаемые API TextDecoder , показаны в таблицах ниже. Для каждой кодировки может быть использовано одно или несколько псевдонимов.

Различные конфигурации сборки Node.js поддерживают различные наборы кодировок. Хотя базовый набор кодировок поддерживается даже в сборках Node.js без включенного ICU, поддержка некоторых кодировок предоставляется только при компиляции Node.js с ICU и использованием полных данных ICU (см. Международные настройки).

Кодировки, поддерживаемые без ICU

Кодировка Псевдонимы
'utf-8' 'unicode-1-1-utf-8', 'utf8'
'utf-16le' 'utf-16'

Кодировки, поддерживаемые по умолчанию (с ICU)

Кодировка Псевдонимы
'utf-8' 'unicode-1-1-utf-8', 'utf8'
'utf-16le' 'utf-16'
'utf-16be'

Кодировки, требующие полных данных ICU

Кодировка Псевдонимы
'ibm866' '866', 'cp866', 'csibm866'
'iso-8859-2' 'csisolatin2', 'iso-ir-101', 'iso8859-2', 'iso88592', 'iso_8859-2', 'iso_8859-2:1987', 'l2', 'latin2'
'iso-8859-3' 'csisolatin3', 'iso-ir-109', 'iso8859-3', 'iso88593', 'iso_8859-3', 'iso_8859-3:1988', 'l3', 'latin3'
'iso-8859-4' 'csisolatin4', 'iso-ir-110', 'iso8859-4', 'iso88594', 'iso_8859-4', 'iso_8859-4:1988', 'l4', 'latin4'
'iso-8859-5' 'csisolatincyrillic', 'cyrillic', 'iso-ir-144', 'iso8859-5', 'iso88595', 'iso_8859-5', 'iso_8859-5:1988'
'iso-8859-6' 'arabic', 'asmo-708', 'csiso88596e', 'csiso88596i', 'csisolatinarabic', 'ecma-114', 'iso-8859-6-e', 'iso-8859-6-i', 'iso-ir-127', 'iso8859-6', 'iso88596', 'iso_8859-6', 'iso_8859-6:1987'
'iso-8859-7' 'csisolatingreek', 'ecma-118', 'elot_928', 'greek', 'greek8', 'iso-ir-126', 'iso8859-7', 'iso88597', 'iso_8859-7', 'iso_8859-7:1987', 'sun_eu_greek'
'iso-8859-8' 'csiso88598e', 'csisolatinhebrew', 'hebrew', 'iso-8859-8-e', 'iso-ir-138', 'iso8859-8', 'iso88598', 'iso_8859-8', 'iso_8859-8:1988', 'visual'
'iso-8859-8-i' 'csiso88598i', 'logical'
'iso-8859-10' 'csisolatin6', 'iso-ir-157', 'iso8859-10', 'iso885910', 'l6', 'latin6'
'iso-8859-13' 'iso8859-13', 'iso885913'
'iso-8859-14' 'iso8859-14', 'iso885914'
'iso-8859-15' 'csisolatin9', 'iso8859-15', 'iso885915', 'iso_8859-15', 'l9'
'koi8-r' 'cskoi8r', 'koi', 'koi8', 'koi8_r'
'koi8-u' 'koi8-ru'
'macintosh' 'csmacintosh', 'mac', 'x-mac-roman'
'windows-874' 'dos-874', 'iso-8859-11', 'iso8859-11', 'iso885911', 'tis-620'
'windows-1250' 'cp1250', 'x-cp1250'
'windows-1251' 'cp1251', 'x-cp1251'
'windows-1252' 'ansi_x3.4-1968', 'ascii', 'cp1252', 'cp819', 'csisolatin1', 'ibm819', 'iso-8859-1', 'iso-ir-100', 'iso8859-1', 'iso88591', 'iso_8859-1', 'iso_8859-1:1987', 'l1', 'latin1', 'us-ascii', 'x-cp1252'
'windows-1253' 'cp1253', 'x-cp1253'
'windows-1254' 'cp1254', 'csisolatin5', 'iso-8859-9', 'iso-ir-148', 'iso8859-9', 'iso88599', 'iso_8859-9', 'iso_8859-9:1989', 'l5', 'latin5', 'x-cp1254'
'windows-1255' 'cp1255', 'x-cp1255'
'windows-1256' 'cp1256', 'x-cp1256'
'windows-1257' 'cp1257', 'x-cp1257'
'windows-1258' 'cp1258', 'x-cp1258'
'x-mac-cyrillic' 'x-mac-ukrainian'
'gbk' 'chinese', 'csgb2312', 'csiso58gb231280', 'gb2312', 'gb_2312', 'gb_2312-80', 'iso-ir-58', 'x-gbk'
'gb18030'
'big5' 'big5-hkscs', 'cn-big5', 'csbig5', 'x-x-big5'
'euc-jp' 'cseucpkdfmtjapanese', 'x-euc-jp'
'iso-2022-jp' 'csiso2022jp'
'shift_jis' 'csshiftjis', 'ms932', 'ms_kanji', 'shift-jis', 'sjis', 'windows-31j', 'x-sjis'
'euc-kr' 'cseuckr', 'csksc56011987', 'iso-ir-149', 'korean', 'ks_c_5601-1987', 'ks_c_5601-1989', 'ksc5601', 'ksc_5601', 'windows-949'

Кодировка 'iso-8859-16', перечисленная в стандарте WHATWG Encoding, не поддерживается.

new TextDecoder([encoding[, options]])

История
Версия Изменения
v11.0.0

Класс теперь доступен в глобальном объекте.

v8.3.0

Добавлен в: v8.3.0

  • encoding <строка> Определяет encoding, которые поддерживает этот экземпляр TextDecoder. По умолчанию: 'utf-8'.
  • options <Объект>
    • fatal <логическое значение> true если ошибки декодирования являются фатальными. Этот параметр поддерживается только при включении ICU (см. Международная локализация). По умолчанию: false.
    • ignoreBOM <логическое значение> Если true, TextDecoder будет включать управляющий символ порядка байтов в результат декодирования. Если false, управляющий символ порядка байтов будет удален из вывода. Этот параметр используется только тогда, когда encoding равно 'utf-8', 'utf-16be' или 'utf-16le'. По умолчанию: false.

Создает новый экземпляр TextDecoder. encoding может указать одну из поддерживаемых кодировок или псевдоним.

Класс TextDecoder также доступен в глобальном объекте.

textDecoder.decode([input[, options]])

  • input <ArrayBuffer> | <DataView> | <TypedArray> Экземпляр ArrayBuffer, DataView или TypedArray содержащий закодированные данные.
  • options <Объект>
    • stream <логическое значение> true если ожидаются дополнительные фрагменты данных. По умолчанию: false.
  • Возвращает: <строка>

Декодирует input и возвращает строку. Если options.stream равно true, любые неполные последовательности байтов в конце input буферизуются внутри и выводятся после следующего вызова textDecoder.decode().

Если textDecoder.fatal равно true, ошибки декодирования приведут к сбросу TypeError.

textDecoder.encoding

  • <строка>

Кодировка, поддерживаемая экземпляром TextDecoder.

textDecoder.fatal

  • <логическое значение>

Значение будет true если ошибки декодирования приводят к сбросу TypeError.

textDecoder.ignoreBOM

  • <логическое значение>

Значение будет true если результат декодирования будет включать управляющий символ порядка байтов.

Класс: util.TextEncoder

История
Версия Изменения
v11.0.0

Класс теперь доступен в глобальном объекте.

v8.3.0

Добавлен в: v8.3.0

Реализация API TextEncoder стандарта WHATWG Encoding. Все экземпляры TextEncoder поддерживают только кодировку UTF-8.

const encoder = new TextEncoder();
const uint8array = encoder.encode('this is some data');

Класс TextEncoder также доступен в глобальном объекте.

textEncoder.encode([input])

  • input <строка> Текст для кодирования. По умолчанию: пустая строка.
  • Возвращает: <Uint8Array>

Кодирует строку input в UTF-8 и возвращает Uint8Array, содержащий закодированные байты.

textEncoder.encodeInto(src, dest)

  • src <string> Текст для кодирования.
  • dest <Uint8Array> Массив для хранения результата кодирования.
  • Возвращает: <Object>
    • read <number> Прочитанные кодовые единицы Юникода из src.
    • written <number> Записанные байты UTF-8 в dest.

Кодирует строку src в формате UTF-8 в массив dest Uint8Array и возвращает объект, содержащий прочитанные кодовые единицы Юникода и записанные байты UTF-8.

const encoder = new TextEncoder();
const src = 'this is some data';
const dest = new Uint8Array(10);
const { read, written } = encoder.encodeInto(src, dest);

textEncoder.encoding

  • <string>

Кодировка, поддерживаемая экземпляром TextEncoder. Всегда установлено в 'utf-8'.

util.types

Добавлен в: v10.0.0

util.types предоставляет проверки типов для различных встроенных объектов. В отличие от instanceof или Object.prototype.toString.call(value), эти проверки не проверяют свойства объекта, доступные из JavaScript (например, их прототип), и обычно связаны с издержками вызова в C++.

Результат, как правило, не гарантирует какие свойства или поведение значение демонстрирует в JavaScript. Они в первую очередь полезны для разработчиков дополнений, которые предпочитают выполнять проверку типа в JavaScript.

util.types.isAnyArrayBuffer(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является встроенным экземпляром ArrayBuffer или SharedArrayBuffer.

См. также util.types.isArrayBuffer() и util.types.isSharedArrayBuffer().

util.types.isAnyArrayBuffer(new ArrayBuffer());  // Returns true
util.types.isAnyArrayBuffer(new SharedArrayBuffer());  // Returns true

util.types.isArrayBufferView(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является экземпляром одного из представлений ArrayBuffer, таких как объекты массивов с типом или DataView. Эквивалентно ArrayBuffer.isView().

util.types.isArrayBufferView(new Int8Array());  // true
util.types.isArrayBufferView(Buffer.from('hello world')); // true
util.types.isArrayBufferView(new DataView(new ArrayBuffer(16)));  // true
util.types.isArrayBufferView(new ArrayBuffer());  // false

util.types.isArgumentsObject(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является объектом arguments.

function foo() {
  util.types.isArgumentsObject(arguments);  // Returns true
}

util.types.isArrayBuffer(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является встроенным экземпляром ArrayBuffer. Это не включает экземпляры SharedArrayBuffer. Обычно желательно проверить оба; см. util.types.isAnyArrayBuffer() для этого.

util.types.isArrayBuffer(new ArrayBuffer());  // Returns true
util.types.isArrayBuffer(new SharedArrayBuffer());  // Returns false

util.types.isAsyncFunction(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является асинхронной функцией. Это отражает то, что видит движок JavaScript; в частности, возвращаемое значение может не соответствовать исходному коду, если использовался инструмент транспиляции.

util.types.isAsyncFunction(function foo() {});  // Returns false
util.types.isAsyncFunction(async function foo() {});  // Returns true

util.types.isBigInt64Array(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является экземпляром BigInt64Array.

util.types.isBigInt64Array(new BigInt64Array());   // Returns true
util.types.isBigInt64Array(new BigUint64Array());  // Returns false

util.types.isBigUint64Array(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является экземпляром BigUint64Array.

util.types.isBigUint64Array(new BigInt64Array());   // Returns false
util.types.isBigUint64Array(new BigUint64Array());  // Returns true

util.types.isBooleanObject(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является объектом типа boolean, например, созданным new Boolean().

util.types.isBooleanObject(false);  // Returns false
util.types.isBooleanObject(true);   // Returns false
util.types.isBooleanObject(new Boolean(false)); // Returns true
util.types.isBooleanObject(new Boolean(true));  // Returns true
util.types.isBooleanObject(Boolean(false)); // Returns false
util.types.isBooleanObject(Boolean(true));  // Returns false

util.types.isBoxedPrimitive(value)

Добавлен в: v10.11.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является любым объектом-обёрткой примитивного типа, например, созданным new Boolean(), new String() или Object(Symbol()).

Например:

util.types.isBoxedPrimitive(false); // Returns false
util.types.isBoxedPrimitive(new Boolean(false)); // Returns true
util.types.isBoxedPrimitive(Symbol('foo')); // Returns false
util.types.isBoxedPrimitive(Object(Symbol('foo'))); // Returns true
util.types.isBoxedPrimitive(Object(BigInt(5))); // Returns true

util.types.isDataView(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является встроенным экземпляром DataView.

const ab = new ArrayBuffer(20);
util.types.isDataView(new DataView(ab));  // Returns true
util.types.isDataView(new Float64Array());  // Returns false

См. также ArrayBuffer.isView().

util.types.isDate(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является встроенным экземпляром Date.

util.types.isDate(new Date());  // Returns true

util.types.isExternal(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является встроенным значением External.

Встроенное значение External — это специальный тип объекта, содержащий сырую C++ указатель (void*) для доступа из нативного кода и не имеющий других свойств. Такие объекты создаются либо внутренними компонентами Node.js, либо нативными дополнениями. В JavaScript они являются замороженными замороженными объектами с null прототипом.

#include <js_native_api.h>
#include <stdlib.h>
napi_value result;
static napi_value MyNapi(napi_env env, napi_callback_info info) {
  int* raw = (int*) malloc(1024);
  napi_status status = napi_create_external(env, (void*) raw, NULL, NULL, &result);
  if (status != napi_ok) {
    napi_throw_error(env, NULL, "napi_create_external failed");
    return NULL;
  }
  return result;
}
...
DECLARE_NAPI_PROPERTY("myNapi", MyNapi)
...
const native = require('napi_addon.node');
const data = native.myNapi();
util.types.isExternal(data); // returns true
util.types.isExternal(0); // returns false
util.types.isExternal(new String('foo')); // returns false

Для получения дополнительной информации об napi_create_external, обратитесь к napi_create_external().

util.types.isFloat32Array(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является встроенным экземпляром Float32Array.

util.types.isFloat32Array(new ArrayBuffer());  // Returns false
util.types.isFloat32Array(new Float32Array());  // Returns true
util.types.isFloat32Array(new Float64Array());  // Returns false

util.types.isFloat64Array(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является экземпляром встроенного массива Float64Array.

util.types.isFloat64Array(new ArrayBuffer());  // Returns false
util.types.isFloat64Array(new Uint8Array());  // Returns false
util.types.isFloat64Array(new Float64Array());  // Returns true

util.types.isGeneratorFunction(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является генераторной функцией. Это отражает то, что видит движок JavaScript; в частности, возвращаемое значение может не соответствовать исходному коду, если использовался инструмент транспиляции.

util.types.isGeneratorFunction(function foo() {});  // Returns false
util.types.isGeneratorFunction(function* foo() {});  // Returns true

util.types.isGeneratorObject(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является объектом генератора, возвращённым встроенной генераторной функцией. Это отражает то, что видит движок JavaScript; в частности, возвращаемое значение может не соответствовать исходному коду, если использовался инструмент транспиляции.

function* foo() {}
const generator = foo();
util.types.isGeneratorObject(generator);  // Returns true

util.types.isInt8Array(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является экземпляром встроенного массива Int8Array.

util.types.isInt8Array(new ArrayBuffer());  // Returns false
util.types.isInt8Array(new Int8Array());  // Returns true
util.types.isInt8Array(new Float64Array());  // Returns false

util.types.isInt16Array(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является экземпляром встроенного массива Int16Array.

util.types.isInt16Array(new ArrayBuffer());  // Returns false
util.types.isInt16Array(new Int16Array());  // Returns true
util.types.isInt16Array(new Float64Array());  // Returns false

util.types.isInt32Array(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является экземпляром встроенного массива Int32Array.

util.types.isInt32Array(new ArrayBuffer());  // Returns false
util.types.isInt32Array(new Int32Array());  // Returns true
util.types.isInt32Array(new Float64Array());  // Returns false

util.types.isMap(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является экземпляром встроенного объекта Map.

util.types.isMap(new Map());  // Returns true

util.types.isMapIterator(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является итератором, возвращённым для экземпляра встроенного объекта Map.

const map = new Map();
util.types.isMapIterator(map.keys());  // Returns true
util.types.isMapIterator(map.values());  // Returns true
util.types.isMapIterator(map.entries());  // Returns true
util.types.isMapIterator(map[Symbol.iterator]());  // Returns true

util.types.isModuleNamespaceObject(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является экземпляром Модульного пространства имён.

import * as ns from './a.js';

util.types.isModuleNamespaceObject(ns);  // Returns true

util.types.isNativeError(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является экземпляром встроенного типа Error.

util.types.isNativeError(new Error());  // Returns true
util.types.isNativeError(new TypeError());  // Returns true
util.types.isNativeError(new RangeError());  // Returns true

util.types.isNumberObject(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является числовым объектом, например, созданным с помощью new Number().

util.types.isNumberObject(0);  // Returns false
util.types.isNumberObject(new Number(0));   // Returns true

util.types.isPromise(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является экземпляром встроенного объекта Promise.

util.types.isPromise(Promise.resolve(42));  // Returns true

util.types.isProxy(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является экземпляром Proxy.

const target = {};
const proxy = new Proxy(target, {});
util.types.isProxy(target);  // Returns false
util.types.isProxy(proxy);  // Returns true

util.types.isRegExp(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является объектом регулярного выражения.

util.types.isRegExp(/abc/);  // Returns true
util.types.isRegExp(new RegExp('abc'));  // Returns true

util.types.isSet(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является экземпляром встроенного объекта Set.

util.types.isSet(new Set());  // Returns true

util.types.isSetIterator(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является итератором, возвращённым для экземпляра встроенного объекта Set.

const set = new Set();
util.types.isSetIterator(set.keys());  // Returns true
util.types.isSetIterator(set.values());  // Returns true
util.types.isSetIterator(set.entries());  // Returns true
util.types.isSetIterator(set[Symbol.iterator]());  // Returns true

util.types.isSharedArrayBuffer(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является экземпляром встроенного объекта SharedArrayBuffer. Это не включает экземпляры ArrayBuffer. Обычно желательно проверять оба; см. util.types.isAnyArrayBuffer() для этого.

util.types.isSharedArrayBuffer(new ArrayBuffer());  // Returns false
util.types.isSharedArrayBuffer(new SharedArrayBuffer());  // Returns true

util.types.isStringObject(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true если значение является строковым объектом, например, созданным с помощью new String().

util.types.isStringObject('foo');  // Returns false
util.types.isStringObject(new String('foo'));   // Returns true

util.types.isSymbolObject(value)

Добавлен в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true , если значение является объектом типа symbol, созданным путём вызова Object() для Symbol примитива.

const symbol = Symbol('foo');
util.types.isSymbolObject(symbol);  // Returns false
util.types.isSymbolObject(Object(symbol));   // Returns true

util.types.isTypedArray(value)

Добавлена в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true , если значение является экземпляром встроенного типа TypedArray.

util.types.isTypedArray(new ArrayBuffer());  // Returns false
util.types.isTypedArray(new Uint8Array());  // Returns true
util.types.isTypedArray(new Float64Array());  // Returns true

См. также ArrayBuffer.isView().

util.types.isUint8Array(value)

Добавлена в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true , если значение является экземпляром встроенного типа Uint8Array.

util.types.isUint8Array(new ArrayBuffer());  // Returns false
util.types.isUint8Array(new Uint8Array());  // Returns true
util.types.isUint8Array(new Float64Array());  // Returns false

util.types.isUint8ClampedArray(value)

Добавлена в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true , если значение является экземпляром встроенного типа Uint8ClampedArray.

util.types.isUint8ClampedArray(new ArrayBuffer());  // Returns false
util.types.isUint8ClampedArray(new Uint8ClampedArray());  // Returns true
util.types.isUint8ClampedArray(new Float64Array());  // Returns false

util.types.isUint16Array(value)

Добавлена в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true , если значение является экземпляром встроенного типа Uint16Array.

util.types.isUint16Array(new ArrayBuffer());  // Returns false
util.types.isUint16Array(new Uint16Array());  // Returns true
util.types.isUint16Array(new Float64Array());  // Returns false

util.types.isUint32Array(value)

Добавлена в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true , если значение является экземпляром встроенного типа Uint32Array.

util.types.isUint32Array(new ArrayBuffer());  // Returns false
util.types.isUint32Array(new Uint32Array());  // Returns true
util.types.isUint32Array(new Float64Array());  // Returns false

util.types.isWeakMap(value)

Добавлена в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true , если значение является экземпляром встроенного типа WeakMap.

util.types.isWeakMap(new WeakMap());  // Returns true

util.types.isWeakSet(value)

Добавлена в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true , если значение является экземпляром встроенного типа WeakSet.

util.types.isWeakSet(new WeakSet());  // Returns true

util.types.isWebAssemblyCompiledModule(value)

Добавлена в: v10.0.0
  • value <any>
  • Возвращает: <boolean>

Возвращает true , если значение является экземпляром встроенного типа WebAssembly.Module.

const module = new WebAssembly.Module(wasmBuffer);
util.types.isWebAssemblyCompiledModule(module);  // Returns true

Устаревшие API

Следующие API устарели и больше не должны использоваться. Существующие приложения и модули должны быть обновлены, чтобы найти альтернативные подходы.

util._extend(target, source)

Добавлена в: v0.7.5Устарела начиная с: v6.0.0
Стабильность: 0 - Устарело: Используйте Object.assign() вместо этого.
  • target <Object>
  • source <Object>

Метод util._extend() никогда не предназначался для использования вне внутренних модулей Node.js. Сообщество всё же его обнаружило и использовало.

Он устарел и не должен использоваться в новом коде. JavaScript имеет очень похожую встроенную функциональность через Object.assign().

util.isArray(object)

Добавлена в: v0.6.0Устарела начиная с: v4.0.0
Стабильность: 0 - Устарело: Используйте Array.isArray() вместо этого.
  • object <any>
  • Возвращает: <boolean>

Псевдоним для Array.isArray().

Возвращает true , если заданный object является Array. В противном случае возвращает false.

const util = require('util');

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

util.isBoolean(object)

Добавлена в: v0.11.5Устарела начиная с: v4.0.0
Стабильность: 0 - Устарело: Используйте typeof value === 'boolean' вместо этого.
  • object <any>
  • Возвращает: <boolean>

Возвращает true , если заданный object является Boolean. В противном случае возвращает false.

const util = require('util');

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

util.isBuffer(object)

Добавлена в: v0.11.5Устарела начиная с: v4.0.0
Стабильность: 0 - Устарело: Используйте Buffer.isBuffer() вместо этого.
  • object <any>
  • Возвращает: <boolean>

Возвращает true , если заданный object является Buffer. В противном случае возвращает false.

const util = require('util');

util.isBuffer({ length: 0 });
// Returns: false
util.isBuffer([]);
// Returns: false
util.isBuffer(Buffer.from('hello world'));
// Returns: true

util.isDate(object)

Добавлена в: v0.6.0Устарела начиная с: v4.0.0
Стабильность: 0 - Устарело: Используйте util.types.isDate() вместо этого.
  • object <any>
  • Возвращает: <boolean>

Возвращает true , если заданный object является Date. В противном случае возвращает false.

const util = require('util');

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

util.isError(object)

Добавлена в: v0.6.0Устарела начиная с: v4.0.0
Стабильность: 0 - Устарело: Используйте util.types.isNativeError() вместо этого.
  • object <any>
  • Возвращает: <boolean>

Возвращает true , если заданный object является Error. В противном случае возвращает false.

const util = require('util');

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.

const util = require('util');
const obj = { name: 'Error', message: 'an error occurred' };

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

util.isFunction(object)

Добавлен в: v0.11.5Устарел начиная с: v4.0.0
Устойчивость: 0 - Устарел: Используйте typeof value === 'function' вместо этого.
  • object <любой>
  • Возвращает: <boolean>

Возвращает true, если заданный object является Function. В противном случае возвращает false.

const util = require('util');

function Foo() {}
const Bar = () => {};

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

util.isNull(object)

Добавлен в: v0.11.5Устарел начиная с: v4.0.0
Устойчивость: 0 - Устарел: Используйте value === null вместо этого.
  • object <любой>
  • Возвращает: <boolean>

Возвращает true, если заданный object строго null. В противном случае возвращает false.

const util = require('util');

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

util.isNullOrUndefined(object)

Добавлен в: v0.11.5Устарел начиная с: v4.0.0
Устойчивость: 0 - Устарел: Используйте value === undefined || value === null вместо этого.
  • object <любой>
  • Возвращает: <boolean>

Возвращает true, если заданный object равен null или undefined. В противном случае возвращает false.

const util = require('util');

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

util.isNumber(object)

Добавлен в: v0.11.5Устарел начиная с: v4.0.0
Устойчивость: 0 - Устарел: Используйте typeof value === 'number' вместо этого.
  • object <любой>
  • Возвращает: <boolean>

Возвращает true, если заданный object является Number. В противном случае возвращает false.

const util = require('util');

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

util.isObject(object)

Добавлен в: v0.11.5Устарел начиная с: v4.0.0
Устойчивость: 0 - Устарел: Используйте value !== null && typeof value === 'object' вместо этого.
  • object <любой>
  • Возвращает: <boolean>

Возвращает true, если заданный object строго является Object и не является Function (хотя функции являются объектами в JavaScript). В противном случае возвращает false.

const util = require('util');

util.isObject(5);
// Returns: false
util.isObject(null);
// Returns: false
util.isObject({});
// Returns: true
util.isObject(() => {});
// Returns: false

util.isPrimitive(object)

Добавлен в: v0.11.5Устарел начиная с: v4.0.0
Устойчивость: 0 - Устарел: Используйте (typeof value !== 'object' && typeof value !== 'function') || value === null вместо этого.
  • object <любой>
  • Возвращает: <boolean>

Возвращает true, если заданный object является примитивным типом. В противном случае возвращает false.

const util = require('util');

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(() => {});
// Returns: false
util.isPrimitive(/^$/);
// Returns: false
util.isPrimitive(new Date());
// Returns: false

util.isRegExp(object)

Добавлен в: v0.6.0Устарел начиная с: v4.0.0
Устойчивость: 0 - Устарел
  • object <любой>
  • Возвращает: <boolean>

Возвращает true, если заданный object является RegExp. В противном случае возвращает false.

const util = require('util');

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

util.isString(object)

Добавлен в: v0.11.5Устарел начиная с: v4.0.0
Устойчивость: 0 - Устарел: Используйте typeof value === 'string' вместо этого.
  • object <любой>
  • Возвращает: <boolean>

Возвращает true, если заданный object является string. В противном случае возвращает false.

const util = require('util');

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

util.isSymbol(object)

Добавлен в: v0.11.5Устарел начиная с: v4.0.0
Устойчивость: 0 - Устарел: Используйте typeof value === 'symbol' вместо этого.
  • object <любой>
  • Возвращает: <boolean>

Возвращает true, если заданный object является Symbol. В противном случае возвращает false.

const util = require('util');

util.isSymbol(5);
// Returns: false
util.isSymbol('foo');
// Returns: false
util.isSymbol(Symbol('foo'));
// Returns: true

util.isUndefined(object)

Добавлен в: v0.11.5Устарел начиная с: v4.0.0
Устойчивость: 0 - Устарел: Используйте value === undefined вместо этого.
  • object <любой>
  • Возвращает: <boolean>

Возвращает true, если заданный object равен undefined. В противном случае возвращает false.

const util = require('util');

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

util.log(string)

Добавлен в: v0.3.0Устарел начиная с: v6.0.0
Устойчивость: 0 - Устарел: Используйте модуль третьей стороны вместо этого.
  • string <строка>

Метод util.log() выводит заданную string в stdout с включенной меткой времени.

const util = require('util');

util.log('Timestamped message.');

© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/dist/latest-v12.x/docs/api/util.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API