Q:

Node: prototype using "Class" syntax does not show expected object

In JS, if I use a constructor function to create a new object, and I access the prototype object I'm able to see any property the prototype has. ( in code which will much more clear):
function F() {
  this.attr = 42;
} 
F.prototype.foo = function() {
  return 'life';
}

$> let f = new F();
undefined
$> f
F { attr: 42 }
$> Object.getPrototypeOf(f)
F { foo: [Function] }

Right here everything is OK. 
Now, I'm going to use the class syntax in order to create the same scenario
class C {
  constructor() {
    this.attr = 42;
  }
  foo() {
    return 'life';
  }
}

$> let c = new C()
undefined
$> c
C { attr: 42 }
$> Object.getPrototypeOf(o)
C {}

That resulting C {} is confusing me.  Where is my foo attribute?  it's not in the c object, but seems to be neither in my C prototype!  

A:

Most probably, the issue is that your console does not include non-enumerable properties when displaying an object. 
In your first case, you create the properties by assignment, so they are enumerable:
Object.getOwnPropertyDescriptor(F.prototype, 'foo').enumerable; // true

But in the second case they are not
Object.getOwnPropertyDescriptor(C.prototype, 'foo').enumerable; // false

That's why you should never trust object representations in console.  If you want to list all the own properties of an object, this will probably work:
Object.getOwnPropertyNames(C.prototype); // [ "constructor", "foo" ]

You may want to join that array if your console is not able to properly display arrays neither.