Can `new` be optional?
Oriol _
oriol-bugzilla at hotmail.com
Sun Nov 5 14:28:48 UTC 2017
> Why can't `new` be optional?
When you call a function, you are using the internal [[Call]] method. When you use the `new` operator, it's the internal [[Construct]] method.
They are different things, so IMO avoiding `new` when you are instantiating is bad practice.
But if you really want to avoid `new` when using ES6 `class` syntax, you can use proxies, e.g.
```js
let MyClass = new Proxy(class MyClass {
constructor(arg) { this.arg = arg; }
}, {
apply: (target, thisArg, args) => Reflect.construct(target, args)
});
MyClass(1); // { arg: 1 }
new MyClass(2); // { arg: 2 }
```
--Oriol
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20171105/7e68f964/attachment.html>
More information about the es-discuss
mailing list