`.constructor` is unreliable, and can be easily forged - of course,
`Symbol.typeof` would create the same unreliability with one of the few
truly reliable operators in the language.

On Tue, Jan 15, 2019 at 12:38 PM J Decker <[email protected]> wrote:

>
>
> On Sat, Jan 12, 2019 at 8:19 AM Randy Buchholz <[email protected]>
> wrote:
>
>> (Hi all, new to group)
>>
>>
>>
>> Some of the Well Known Symbols are linked to standard functions –
>>  Symbol.toStringTag - A string value used for the default description of an
>> object. Used by Object.prototype.toString().
>>
>>
>>
>> When I have a Class instance (say, `const flow = new Flow()`, the
>> debugger shows `flow = Flow {`.
>>
>> But when I do `console.log( typeof flow)` the output is `object`.
>>
>>
>>
>> I assume changing basic behavior `typeof` would be breaking, but
>> extending it through a symbol would be useful.
>>
>>
>>
>> `Symbol.typeofTag` of just `Symbol.typeof`
>>
>>
>>
>> Invoking `typeof` on an object with this symbol would return “user-typed”
>> information.
>>
>>
>>
>
> can't you just use the constructor name when needing more detail?
>
> var a = new Date();
> a.constructor.name
> "Date"
>
>
>
>> (Posting Question)
>>
>> What is the preferred format/approach for highlighting code in posts?
>>
>> ____________________
>>
>> Possible Approaches
>>
>> ```
>>
>> class Flow {
>>
>>     get [Symbol.typeof]() { return Flow; }  or { return “Flow” }
>>
>> }
>>
>> ```
>>
>> would work much like Symbol.species.  Implicitly casting to string would
>> be more intuitive I think.
>>
>>
>>
>> Other approaches, (special handling of well-knowns) could be:
>>
>>
>>
>> Decorator-ish
>>
>> ```
>>
>> [Symbol.typeof] = “Flow”
>>
>> Class Flow {…
>>
>> ```
>>
>> or inferred
>>
>>
>>
>> ```
>>
>> [Symbol.typeof]
>>
>> class Flow {…
>>
>> ```
>>
>>
>>
>> Internal – In class, but not in a function.
>>
>>
>>
>> ```
>>
>> Class Flow {
>>
>> [Symbol.typeof]
>>
>> or
>>
>> [Symbol.typeof] = “Flow”
>>
>> or
>>
>> [Symbol.typeof] = Flow
>>
>> or
>>
>> [Symbol.typeof] = this
>>
>>
>>
>> ```
>>
>>
>>
>> Constructor
>>
>> ```
>>
>> Class Flow {
>>
>>    Constructor() {
>>
>>       this[Symbol.typeof] = …
>>
>>       …
>>
>> ```
>>
>>
>> _______________________________________________
>> es-discuss mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
>>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to