Test for [[Construct]] invocation (was: Re: Must built-in prototypes also be valid instances? (Was: Why DataView.prototype object's [[Class]] is "Object"?))
Herby Vojčík wrote:
It can be
arguments.isConstruct
, for example.
(One-handed Luke Skywalker voice:) NOOOOOooooooooo!!!!
Brendan Eich wrote:
Herby Vojčík wrote:
It can be
arguments.isConstruct
, for example.(One-handed Luke Skywalker voice:) NOOOOOooooooooo!!!!
Or whatever else, I just happened to write first thing where it could reside.
(One-handed Luke Skywalker voice:) NOOOOOooooooooo!!!!
: ) Another perfect response!
You ask jS how I do ask a class function: if (config is instanceof V.Construction) return; - please read how I'm doing such a class function: metadea.de/V/default.aspx#V_construct_and_your_class
It's really the only function syntax to do real OOP, in javaScript. I'd like to fork Function function but the main functionality is to check if it prototypes (prototyping), if it returns itself, undefined or throws an exception (functioning) or the function constructs the object instance (constructing). Read!
/Uli
From: Kevin Smith Sent: Tuesday, October 02, 2012 10:11 PM To: Brendan Eich Cc: es-discuss Subject: Re: Test for [[Construct]] invocation (was: Re: Must built-inprototypes also be valid instances? (Was: Why DataView.prototypeobject's [[Class]] is "Object"?))
(One-handed Luke Skywalker voice:) NOOOOOooooooooo!!!!
: ) Another perfect response!
Allen Wirfs-Brock wrote:
Well, here (and in other cases, too) it would be handy to be able to distinguish whether the call is constructor (new operator, super() call in class constructor) or plain call (the rest). It can be
arguments.isConstruct
, for example.Than, it would simply be solved by
if (!arguments.isConstruct) return;
(or throw) as the first line in constructor.Herby
P.S.: Alternatively, this line can be intrinsic property of class constructor, but this makes class special and not a desugaring any more...