Files
2021-06-14 21:14:20 +01:00

92 lines
2.1 KiB
JavaScript
Executable File

#!/usr/bin/env node
// https://cirosantilli.com/linux-kernel-module-cheat#node-js
const util = require('util');
class MyClassUtilInspectCustomSubobject {
constructor(a, b) {
this.a = a;
this.b = b;
}
[util.inspect.custom]() {
return `my type is MyClassUtilInspectCustomSubobject and a is ${this.a} and b is ${this.b}`;
}
}
class MyClassUtilInspectCustom {
constructor(a, b, subobject) {
this.a = a;
this.b = b;
this.subobject = subobject;
}
[util.inspect.custom]() {
return `my type is MyClassUtilInspectCustom and a is ${this.a} and b is ${this.b} and subobject is ${util.inspect(this.subobject)}`;
}
}
let my_object = new MyClassUtilInspectCustom(1, 2, new MyClassUtilInspectCustomSubobject(3, 4));
// Affected.
console.log('util.inspect');
console.log(util.inspect(my_object));
console.log();
// Affected.
console.log('console.log');
console.log(my_object);
console.log();
// Not affected.
console.log('toString');
console.log(my_object.toString());
console.log();
// Not affected.
console.log('toString implicit +');
console.log('implicit ' + my_object);
console.log();
// Not affected.
console.log('template string');
console.log(`${my_object}`);
console.log();
class MyClassToStringSubobject {
constructor(a, b) {
this.a = a;
this.b = b;
}
toString() {
return `my type is MyClassToString and a is ${this.a} and b is ${this.b}`;
}
}
class MyClassToString {
constructor(a, b, subobject) {
this.a = a;
this.b = b;
this.subobject = subobject;
}
toString() {
return `my type is MyClassToString and a is ${this.a} and b is ${this.b} and subobject is ${this.subobject}`;
}
}
my_object = new MyClassToString(1, 2, new MyClassToStringSubobject(3, 4));
// Affected.
console.log('util.inspect');
console.log(util.inspect(my_object));
console.log();
// Affected.
console.log('console.log');
console.log(my_object);
console.log();
// Affected.
console.log('toString');
console.log(my_object.toString());
console.log();
// Affected.
console.log('toString implicit +');
console.log('implicit ' + my_object);
console.log();
// Affected.
console.log('template string');
console.log(`${my_object}`);
console.log();