The closest I got to something close to Python\'s repr is this:
function User(name, password){
this.name = name;
this.pass
Node.js util.inspect
http://nodejs.org/api/util.html#util_util_inspect_object_options
To get the object representation that appears on the terminal as a string you can do:
const util = require('util');
console.log(util.inspect({ a: "0\n1", b: "c"}));
// Equivalent: automatically called by `console.log`.
console.log({ a: "0\n1", b: "c"});
output:
{ a: '0\n1', b: 'c' }
{ a: '0\n1', b: 'c' }
This is the same that would appear on the terminal if you copy pasted the string { a: "0\n1", b: "c"} into the terminal and pressed enter.
Override the inspect method of a class for a custom representation
This was asked at: How to change string representation of objects in Nodejs debug console view and mentioned at: https://stackoverflow.com/a/32866283/895245 and https://stackoverflow.com/a/54667225/895245 but here goes a fuller example:
const util = require('util');
class MyClass {
constructor(a, b) {
this.a = a;
this.b = b;
}
[util.inspect.custom]() {
return `a is ${this.a} and b is ${this.b}`;
}
}
const my_object = new MyClass(1, 2);
console.log(util.inspect(my_object));
console.log(my_object);
Output:
a is 1 and b is 2
a is 1 and b is 2
The default inspect if we hadn't defined a custom [util.inspect.custom] would have been:
MyClass { a: 1, b: 2 }
That same representation also shows if you just directly inspect the object on a terminal:
> my_object
a is 1 and b is 2
In older Node.js, the syntax used to be just:
inspect(){}
but that was deprecated with message:
[DEP0079] DeprecationWarning: Custom inspection function on Objects via .inspect() is deprecated
as mentioned at:
Pretty print util.inspect with newlines and indentation
Not possible? Sigh:
One big advantage over JSON.stringify is that inspect takes care of circular dependencies for you. But without pretty print, it is a pain.
Tested in Node.js v10.15.1.