- 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