The class operator: a bridge between object and function exemplers

Axel Rauschmayer axel at
Mon Nov 14 18:36:03 PST 2011

> Given this meaning of "class" when testing a value, I'm not sure if we can rescue the pun above by which we use the same operator to define a class. If forced to choose only one of these two roles for the "class" keyword, I'd prefer to use it only to define a class, not to test values. But having only just noticed this discrepancy, I am also not sure we cannot rescue the pun. Let's try.

Is a dual role even necessary? Why not stick to just class declaration? Looking through the eyes of an outsider, class { ... } looks like a class declaration. Given that we already have typeof and instanceof, wouldn’t an outsider expect a name such as classof? Furthermore, if object exemplars and function exemplars are to exist in parallel. Then:

     function Foo() {};
     var f = new Foo();
     classof f === Foo // true

     let Foo = {};
     var f = new Foo();
     classof f === Foo // true

The above would not hold for `class`.

Dr. Axel Rauschmayer
axel at


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list