Proposal: Class Templates

Ranando King kingmph at gmail.com
Thu Jan 17 21:40:20 UTC 2019


It can still be made to work...

```js
const Abc = (function() {
    const cache = new Map;
    function readCache(c, arg, val=new Map) {
        if (!c.has(a))
            c.set(a, val);

        return c.get(arg);
    }
    return (a, b, c) => {
        // ...optionally do something with a, b, and c...
        // Return a class
        let retval = class Abc$ {
            constructor(x, y, z) {
                this.x = x;
                this.y = y;
                this.z = z;
            }

            // ...optionally do something with a, b, and c...
            show() {
                console.log(`a = ${a}, b = ${b}, c = ${c}`);
                console.log(`x = ${this.x}, y = ${this.y}, z = ${this.z}`);
            }
        };

        return readCache(readCache(readCache(cache, a), b), c, retval);
    };
})();
const obj = new (Abc(4, 5, 6))(1, 2, 3);
obj.show();
```

Now `Abc(4, 5, 6) === Abc(4, 5, 6)`.

On Thu, Jan 17, 2019 at 10:25 AM ViliusCreator <viliuskubilius416 at gmail.com>
wrote:

> But then `Abc(4, 5, 6) !== Abc(4, 5, 6)`. Using `Abc.constructor = class
> Abc$ {}` and then returning `Abc.constructor` won’t make it work.
>
>
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient> Virus-free.
> www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
> <#m_7417576083780660614_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20190117/1451c5c3/attachment-0001.html>


More information about the es-discuss mailing list