Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'doc/api/util.md')
-rw-r--r--doc/api/util.md587
1 files changed, 587 insertions, 0 deletions
diff --git a/doc/api/util.md b/doc/api/util.md
new file mode 100644
index 00000000000..c059be8c0dd
--- /dev/null
+++ b/doc/api/util.md
@@ -0,0 +1,587 @@
+# util
+
+ Stability: 2 - Stable
+
+These functions are in the module `'util'`. Use `require('util')` to
+access them.
+
+The `util` module is primarily designed to support the needs of Node.js's
+internal APIs. Many of these utilities are useful for your own
+programs. If you find that these functions are lacking for your
+purposes, however, you are encouraged to write your own utilities. We
+are not interested in any future additions to the `util` module that
+are unnecessary for Node.js's internal functionality.
+
+## util.debug(string)
+
+ Stability: 0 - Deprecated: Use [`console.error()`][] instead.
+
+Deprecated predecessor of `console.error`.
+
+## util.debuglog(section)
+
+* `section` {String} The section of the program to be debugged
+* Returns: {Function} The logging function
+
+This is used to create a function which conditionally writes to stderr
+based on the existence of a `NODE_DEBUG` environment variable. If the
+`section` name appears in that environment variable, then the returned
+function will be similar to `console.error()`. If not, then the
+returned function is a no-op.
+
+For example:
+
+```js
+var debuglog = util.debuglog('foo');
+
+var bar = 123;
+debuglog('hello from foo [%d]', bar);
+```
+
+If this program is run with `NODE_DEBUG=foo` in the environment, then
+it will output something like:
+
+```
+FOO 3245: hello from foo [123]
+```
+
+where `3245` is the process id. If it is not run with that
+environment variable set, then it will not print anything.
+
+You may separate multiple `NODE_DEBUG` environment variables with a
+comma. For example, `NODE_DEBUG=fs,net,tls`.
+
+## util.deprecate(function, string)
+
+Marks that a method should not be used any more.
+
+```js
+const util = require('util');
+
+exports.puts = util.deprecate(() => {
+ for (var i = 0, len = arguments.length; i < len; ++i) {
+ process.stdout.write(arguments[i] + '\n');
+ }
+}, 'util.puts: Use console.log instead');
+```
+
+It returns a modified function which warns once by default.
+
+If `--no-deprecation` is set then this function is a NO-OP. Configurable
+at run-time through the `process.noDeprecation` boolean (only effective
+when set before a module is loaded.)
+
+If `--trace-deprecation` is set, a warning and a stack trace are logged
+to the console the first time the deprecated API is used. Configurable
+at run-time through the `process.traceDeprecation` boolean.
+
+If `--throw-deprecation` is set then the application throws an exception
+when the deprecated API is used. Configurable at run-time through the
+`process.throwDeprecation` boolean.
+
+`process.throwDeprecation` takes precedence over `process.traceDeprecation`.
+
+## util.error([...])
+
+ Stability: 0 - Deprecated: Use [`console.error()`][] instead.
+
+Deprecated predecessor of `console.error`.
+
+## util.format(format[, ...])
+
+Returns a formatted string using the first argument as a `printf`-like format.
+
+The first argument is a string that contains zero or more *placeholders*.
+Each placeholder is replaced with the converted value from its corresponding
+argument. Supported placeholders are:
+
+* `%s` - String.
+* `%d` - Number (both integer and float).
+* `%j` - JSON. Replaced with the string `'[Circular]'` if the argument
+contains circular references.
+* `%%` - single percent sign (`'%'`). This does not consume an argument.
+
+If the placeholder does not have a corresponding argument, the placeholder is
+not replaced.
+
+```js
+util.format('%s:%s', 'foo'); // 'foo:%s'
+```
+
+If there are more arguments than placeholders, the extra arguments are
+coerced to strings (for objects and symbols, `util.inspect()` is used)
+and then concatenated, delimited by a space.
+
+```js
+util.format('%s:%s', 'foo', 'bar', 'baz'); // 'foo:bar baz'
+```
+
+If the first argument is not a format string then `util.format()` returns
+a string that is the concatenation of all its arguments separated by spaces.
+Each argument is converted to a string with `util.inspect()`.
+
+```js
+util.format(1, 2, 3); // '1 2 3'
+```
+
+## util.inherits(constructor, superConstructor)
+
+Inherit the prototype methods from one [constructor][] into another. The
+prototype of `constructor` will be set to a new object created from
+`superConstructor`.
+
+As an additional convenience, `superConstructor` will be accessible
+through the `constructor.super_` property.
+
+```js
+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);
+}
+
+var 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!"
+```
+
+## util.inspect(object[, options])
+
+Return a string representation of `object`, which is useful for debugging.
+
+An optional *options* object may be passed that alters certain aspects of the
+formatted string:
+
+ - `showHidden` - if `true` then the object's non-enumerable and symbol
+ properties will be shown too. Defaults to `false`.
+
+ - `depth` - tells `inspect` how many times to recurse while formatting the
+ object. This is useful for inspecting large complicated objects. Defaults to
+ `2`. To make it recurse indefinitely pass `null`.
+
+ - `colors` - if `true`, then the output will be styled with ANSI color codes.
+ Defaults to `false`. Colors are customizable, see [Customizing
+ `util.inspect` colors][].
+
+ - `customInspect` - if `false`, then custom `inspect(depth, opts)` functions
+ defined on the objects being inspected won't be called. Defaults to `true`.
+
+Example of inspecting all properties of the `util` object:
+
+```js
+const util = require('util');
+
+console.log(util.inspect(util, { showHidden: true, depth: null }));
+```
+
+Values may supply their own custom `inspect(depth, opts)` functions, when
+called they receive the current depth in the recursive inspection, as well as
+the options object passed to `util.inspect()`.
+
+### Customizing `util.inspect` colors
+
+<!-- type=misc -->
+
+Color output (if enabled) of `util.inspect` is customizable globally
+via `util.inspect.styles` and `util.inspect.colors` objects.
+
+`util.inspect.styles` is a map assigning each style a color
+from `util.inspect.colors`.
+Highlighted styles and their default values are:
+ * `number` (yellow)
+ * `boolean` (yellow)
+ * `string` (green)
+ * `date` (magenta)
+ * `regexp` (red)
+ * `null` (bold)
+ * `undefined` (grey)
+ * `special` - only function at this time (cyan)
+ * `name` (intentionally no styling)
+
+Predefined color codes are: `white`, `grey`, `black`, `blue`, `cyan`,
+`green`, `magenta`, `red` and `yellow`.
+There are also `bold`, `italic`, `underline` and `inverse` codes.
+
+### Custom `inspect()` function on Objects
+
+<!-- type=misc -->
+
+Objects also may define their own `inspect(depth)` function which `util.inspect()`
+will invoke and use the result of when inspecting the object:
+
+```js
+const util = require('util');
+
+var obj = { name: 'nate' };
+obj.inspect = function(depth) {
+ return `{${this.name}}`;
+};
+
+util.inspect(obj);
+ // "{nate}"
+```
+
+You may also return another Object entirely, and the returned String will be
+formatted according to the returned Object. This is similar to how
+`JSON.stringify()` works:
+
+```js
+var obj = { foo: 'this will not show up in the inspect() output' };
+obj.inspect = function(depth) {
+ return { bar: 'baz' };
+};
+
+util.inspect(obj);
+ // "{ bar: 'baz' }"
+```
+
+## util.isArray(object)
+
+ Stability: 0 - Deprecated
+
+Internal alias for [`Array.isArray`][].
+
+Returns `true` if the given "object" is an `Array`. Otherwise, returns `false`.
+
+```js
+const util = require('util');
+
+util.isArray([])
+ // true
+util.isArray(new Array)
+ // true
+util.isArray({})
+ // false
+```
+
+## util.isBoolean(object)
+
+ Stability: 0 - Deprecated
+
+Returns `true` if the given "object" is a `Boolean`. Otherwise, returns `false`.
+
+```js
+const util = require('util');
+
+util.isBoolean(1)
+ // false
+util.isBoolean(0)
+ // false
+util.isBoolean(false)
+ // true
+```
+
+## util.isBuffer(object)
+
+ Stability: 0 - Deprecated: Use [`Buffer.isBuffer()`][] instead.
+
+Returns `true` if the given "object" is a `Buffer`. Otherwise, returns `false`.
+
+```js
+const util = require('util');
+
+util.isBuffer({ length: 0 })
+ // false
+util.isBuffer([])
+ // false
+util.isBuffer(new Buffer('hello world'))
+ // true
+```
+
+## util.isDate(object)
+
+ Stability: 0 - Deprecated
+
+Returns `true` if the given "object" is a `Date`. Otherwise, returns `false`.
+
+```js
+const util = require('util');
+
+util.isDate(new Date())
+ // true
+util.isDate(Date())
+ // false (without 'new' returns a String)
+util.isDate({})
+ // false
+```
+
+## util.isError(object)
+
+ Stability: 0 - Deprecated
+
+Returns `true` if the given "object" is an [`Error`][]. Otherwise, returns
+`false`.
+
+```js
+const util = require('util');
+
+util.isError(new Error())
+ // true
+util.isError(new TypeError())
+ // true
+util.isError({ name: 'Error', message: 'an error occurred' })
+ // false
+```
+
+Note that this method relies on `Object.prototype.toString()` behavior. It is
+possible to obtain an incorrect result when the `object` argument manipulates
+`@@toStringTag`.
+
+```js
+// This example requires the `--harmony-tostring` flag
+const util = require('util');
+const obj = { name: 'Error', message: 'an error occurred' };
+
+util.isError(obj);
+ // false
+obj[Symbol.toStringTag] = 'Error';
+util.isError(obj);
+ // true
+```
+
+## util.isFunction(object)
+
+ Stability: 0 - Deprecated
+
+Returns `true` if the given "object" is a `Function`. Otherwise, returns
+`false`.
+
+```js
+const util = require('util');
+
+function Foo() {}
+var Bar = function() {};
+
+util.isFunction({})
+ // false
+util.isFunction(Foo)
+ // true
+util.isFunction(Bar)
+ // true
+```
+
+## util.isNull(object)
+
+ Stability: 0 - Deprecated
+
+Returns `true` if the given "object" is strictly `null`. Otherwise, returns
+`false`.
+
+```js
+const util = require('util');
+
+util.isNull(0)
+ // false
+util.isNull(undefined)
+ // false
+util.isNull(null)
+ // true
+```
+
+## util.isNullOrUndefined(object)
+
+ Stability: 0 - Deprecated
+
+Returns `true` if the given "object" is `null` or `undefined`. Otherwise,
+returns `false`.
+
+```js
+const util = require('util');
+
+util.isNullOrUndefined(0)
+ // false
+util.isNullOrUndefined(undefined)
+ // true
+util.isNullOrUndefined(null)
+ // true
+```
+
+## util.isNumber(object)
+
+ Stability: 0 - Deprecated
+
+Returns `true` if the given "object" is a `Number`. Otherwise, returns `false`.
+
+```js
+const util = require('util');
+
+util.isNumber(false)
+ // false
+util.isNumber(Infinity)
+ // true
+util.isNumber(0)
+ // true
+util.isNumber(NaN)
+ // true
+```
+
+## util.isObject(object)
+
+ Stability: 0 - Deprecated
+
+Returns `true` if the given "object" is strictly an `Object` __and__ not a
+`Function`. Otherwise, returns `false`.
+
+```js
+const util = require('util');
+
+util.isObject(5)
+ // false
+util.isObject(null)
+ // false
+util.isObject({})
+ // true
+util.isObject(function(){})
+ // false
+```
+
+## util.isPrimitive(object)
+
+ Stability: 0 - Deprecated
+
+Returns `true` if the given "object" is a primitive type. Otherwise, returns
+`false`.
+
+```js
+const util = require('util');
+
+util.isPrimitive(5)
+ // true
+util.isPrimitive('foo')
+ // true
+util.isPrimitive(false)
+ // true
+util.isPrimitive(null)
+ // true
+util.isPrimitive(undefined)
+ // true
+util.isPrimitive({})
+ // false
+util.isPrimitive(function() {})
+ // false
+util.isPrimitive(/^$/)
+ // false
+util.isPrimitive(new Date())
+ // false
+```
+
+## util.isRegExp(object)
+
+ Stability: 0 - Deprecated
+
+Returns `true` if the given "object" is a `RegExp`. Otherwise, returns `false`.
+
+```js
+const util = require('util');
+
+util.isRegExp(/some regexp/)
+ // true
+util.isRegExp(new RegExp('another regexp'))
+ // true
+util.isRegExp({})
+ // false
+```
+
+## util.isString(object)
+
+ Stability: 0 - Deprecated
+
+Returns `true` if the given "object" is a `String`. Otherwise, returns `false`.
+
+```js
+const util = require('util');
+
+util.isString('')
+ // true
+util.isString('foo')
+ // true
+util.isString(String('foo'))
+ // true
+util.isString(5)
+ // false
+```
+
+## util.isSymbol(object)
+
+ Stability: 0 - Deprecated
+
+Returns `true` if the given "object" is a `Symbol`. Otherwise, returns `false`.
+
+```js
+const util = require('util');
+
+util.isSymbol(5)
+ // false
+util.isSymbol('foo')
+ // false
+util.isSymbol(Symbol('foo'))
+ // true
+```
+
+## util.isUndefined(object)
+
+ Stability: 0 - Deprecated
+
+Returns `true` if the given "object" is `undefined`. Otherwise, returns `false`.
+
+```js
+const util = require('util');
+
+var foo;
+util.isUndefined(5)
+ // false
+util.isUndefined(foo)
+ // true
+util.isUndefined(null)
+ // false
+```
+
+## util.log(string)
+
+Output with timestamp on `stdout`.
+
+ require('util').log('Timestamped message.');
+
+## util.print([...])
+
+ Stability: 0 - Deprecated: Use [`console.log()`][] instead.
+
+Deprecated predecessor of `console.log`.
+
+## util.puts([...])
+
+ Stability: 0 - Deprecated: Use [`console.log()`][] instead.
+
+Deprecated predecessor of `console.log`.
+
+## util._extend(obj)
+
+ Stability: 0 - Deprecated: Use Object.assign() instead.
+
+`_extend` was never intended to be used outside of internal NodeJS modules. The
+community found and used it anyway.
+
+It is deprecated and should not be used in new code. JavaScript comes with very
+similar built-in functionality through `Object.assign`.
+
+[`Array.isArray`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray
+[constructor]: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/constructor
+[Customizing `util.inspect` colors]: #util_customizing_util_inspect_colors
+[here]: #util_customizing_util_inspect_colors
+[`Error`]: errors.html#errors_class_error
+[`console.log()`]: console.html#console_console_log_data
+[`console.error()`]: console.html#console_console_error_data
+[`Buffer.isBuffer()`]: buffer.html#buffer_class_method_buffer_isbuffer_obj