- From: Tobie Langel <notifications@github.com>
- Date: Thu, 02 Mar 2017 10:19:15 -0800
- To: heycam/webidl <webidl@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <heycam/webidl/pull/323/review/24804054@github.com>
tobie commented on this pull request. > +The [=corresponding default operation=] of the “toJSON” operation is the [=default toJSON operation=]. + +<div algorithm> + + To invoke the <dfn export>default toJSON operation</dfn> of [=interface=] |I|, + run the the following steps: + + 1. Let |O| be the <emu-val>this</emu-val> value. + 1. Let |result| be [=!=] [=ObjectCreate=]([=%ObjectPrototype%=]). + 1. If there is an [=inherited interface=] of |I| + that declares a “toJSON” operation, then + 1. Let |super| be the “toJSON” operation of + the closest [=inherited interface=] of |I| + that declares a “toJSON” operation. + 1. Set |result| to [=?=] [=Call=](|super|, |O|). + 1. If Type(|result|) is not Object, return |result|. Mmm. I assumed that's what you had to do if you wanted to handle custom toJSON operations in inherited interfaces, e.g.: ```webidl interface Parent { ParentJSON toJSON(); }; dictionary ParentJSON { DOMstring bar; }; interface Child { attribute DOMstring foo: [Default] toJSON(); }; ``` But I guess you can invoke the steps of Parent.toJSON rather than the actual operation. That's a bit over my head tbh. -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/heycam/webidl/pull/323#discussion_r103992922
Received on Thursday, 2 March 2017 18:19:50 UTC