From d9f857df3b65f608d7506d8b4aad2a1f6513772b Mon Sep 17 00:00:00 2001 From: Sakthipriyan Vairamani Date: Thu, 9 Jul 2015 18:54:21 +0000 Subject: [PATCH] doc: note about custom inspect functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See: https://github.com/nodejs/io.js/issues/1798 When an Object is printed in REPL, the actual representation can be overriden by defining `inspect` method on the objects. This patch includes a note about the same in the REPL documentation. PR-URL: https://github.com/nodejs/io.js/pull/2142 Reviewed-By: Jeremiah Senkpiel Reviewed-By: Colin Ihrig Reviewed-By: Michaƫl Zasso --- doc/api/repl.markdown | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/doc/api/repl.markdown b/doc/api/repl.markdown index 99cef9fcc706c1..551a70b2795424 100644 --- a/doc/api/repl.markdown +++ b/doc/api/repl.markdown @@ -237,3 +237,27 @@ The following key combinations in the REPL have these special effects: - `D` - Similar to the `.exit` keyword. - `` - Show both global and local(scope) variables + +### Customizing Object displays in the REPL + +The REPL module internally uses +[util.inspect()][], when printing values. However, `util.inspect` delegates the + call to the object's `inspect()` function, if it has one. You can read more + about this delegation [here][]. + +For example, if you have defined an `inspect()` function on an object, like this: + + > var obj = { foo: 'this will not show up in the inspect() output' }; + undefined + > obj.inspect = function() { + ... return { bar: 'baz' }; + ... }; + [Function] + +and try to print `obj` in REPL, it will invoke the custom `inspect()` function: + + > obj + { bar: 'baz' } + +[util.inspect()]: util.html#util_util_inspect_object_options +[here]: util.html#util_custom_inspect_function_on_objects