diff options
author | chocolateboy <chocolate@cpan.org> | 2018-05-20 21:27:34 +0100 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2018-09-15 13:15:15 +0200 |
commit | dadd6e16888baac8fd110432b81f3fd1237be3e1 (patch) | |
tree | 37d568677731d1d631a0a4400a68979d5eba93ce /doc/api/util.md | |
parent | 16210cad093519b756f2ce8025b29eb9f8d2d046 (diff) | |
download | android-node-v8-dadd6e16888baac8fd110432b81f3fd1237be3e1.tar.gz android-node-v8-dadd6e16888baac8fd110432b81f3fd1237be3e1.tar.bz2 android-node-v8-dadd6e16888baac8fd110432b81f3fd1237be3e1.zip |
util: use a shared symbol for util.inspect.custom
Define `util.inspect.custom` as
`Symbol.for("nodejs.util.inspect.custom")` rather than
`Symbol("util.inspect.custom")`. This allows `inspect` hooks to
easily/safely be defined in non-Node.js environments.
Fixes: https://github.com/nodejs/node/issues/20821
Refs: https://github.com/nodejs/node/pull/22684
PR-URL: https://github.com/nodejs/node/pull/20857
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: John-David Dalton <john.david.dalton@gmail.com>
Diffstat (limited to 'doc/api/util.md')
-rw-r--r-- | doc/api/util.md | 46 |
1 files changed, 40 insertions, 6 deletions
diff --git a/doc/api/util.md b/doc/api/util.md index d67f46c043..d29fbfc5b7 100644 --- a/doc/api/util.md +++ b/doc/api/util.md @@ -574,9 +574,10 @@ terminals. <!-- type=misc --> -Objects may also define their own `[util.inspect.custom](depth, opts)` function -that `util.inspect()` will invoke and use the result of when inspecting the -object: +Objects may also define their own +[`[util.inspect.custom](depth, opts)`][util.inspect.custom] function, +which `util.inspect()` will invoke and use the result of when inspecting +the object: ```js const util = require('util'); @@ -628,10 +629,41 @@ util.inspect(obj); ### util.inspect.custom <!-- YAML added: v6.6.0 +changes: + - version: REPLACEME + pr-url: https://github.com/nodejs/node/pull/20857 + description: This is now defined as a shared symbol. --> -* {symbol} that can be used to declare custom inspect functions, see -[Custom inspection functions on Objects][]. +* {symbol} that can be used to declare custom inspect functions. + +In addition to being accessible through `util.inspect.custom`, this +symbol is [registered globally][global symbol registry] and can be +accessed in any environment as `Symbol.for('nodejs.util.inspect.custom')`. + +```js +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> +``` + +See [Custom inspection functions on Objects][] for more details. ### util.inspect.defaultOptions <!-- YAML @@ -2076,7 +2108,6 @@ Deprecated predecessor of `console.log`. [`Array.isArray()`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray [`ArrayBuffer`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer [`ArrayBuffer.isView()`]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/isView -[async function]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function [`assert.deepStrictEqual()`]: assert.html#assert_assert_deepstrictequal_actual_expected_message [`Buffer.isBuffer()`]: buffer.html#buffer_class_method_buffer_isbuffer_obj [`console.error()`]: console.html#console_console_error_data_args @@ -2118,6 +2149,9 @@ Deprecated predecessor of `console.log`. [Module Namespace Object]: https://tc39.github.io/ecma262/#sec-module-namespace-exotic-objects [WHATWG Encoding Standard]: https://encoding.spec.whatwg.org/ [Common System Errors]: errors.html#errors_common_system_errors +[async function]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function [constructor]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor +[global symbol registry]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/for [list of deprecated APIS]: deprecations.html#deprecations_list_of_deprecated_apis [semantically incompatible]: https://github.com/nodejs/node/issues/4179 +[util.inspect.custom]: #util_util_inspect_custom |