Argh. Meant getYear of course. On Wed, Jan 21, 2015 at 6:04 PM, Mark S. Miller <[email protected]> wrote:
> Not intentional. I forgot that getDate was Annex B. > > > On Wed, Jan 21, 2015 at 6:01 PM, Allen Wirfs-Brock <[email protected]> > wrote: > >> >> On Jan 21, 2015, at 2:09 PM, Mark S. Miller wrote: >> >> // old ES5 code >> >> function f(allegedDate) { >> if (({}).toString.call(allegedDate) === "[object Date]") { >> JSON.stringify(allegedDate); // "[]" impossible in ES5 >> Array.isArray(allegedDate); // true impossible in ES5 >> Date.prototype.getYear.call(allegedDate); // error impossible in ES5 >> } >> } >> >> >> // new ES6 code >> >> const fakeDate = []; >> const defProp = Object.defineProperty; >> defProp(fakeDate, Symbol.toStringTag, { value: "[object Date]" }); >> f(fakeDate); // all ES5 impossible behaviors happen >> >> >> not quite. The last of your tests (getYear) will still fail because >> fakeDate is not internally branded as a date. >> >> See >> http://people.mozilla.org/~jorendorff/es6-draft.html#sec-date.prototype.getyear >> step >> 1 and the definition of "this time value" in >> http://people.mozilla.org/~jorendorff/es6-draft.html#sec-properties-of-the-date-prototype-object >> >> >> (BTW, did you intentionally pick an Annex B Date method?) >> >> Allen >> > > > > -- > Cheers, > --MarkM > -- Cheers, --MarkM
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

