Re: Object.equals() and Object.clone()

2016-11-14 Thread Eric Devine
How about beginning with the HTML structured clone algorithm, and a
`Symbol.clone` property to allow an object to optionally define it's own
cloning behavior?

On Mon, Nov 14, 2016 at 9:02 PM, Isiah Meadows 
wrote:

> I agree. Also, consider iterables. Should their `Symbol.iterator` method
> be called? There's no obvious behavior for the details, and people's
> opinions differ on what should be correct.
>
> On Mon, Nov 14, 2016, 20:58 Frankie Bagnardi  wrote:
>
> It's pretty hard to decide how these behave, specifically with custom
> classes. Focusing on Object.clone...
>
> - with classes do you call the constructor, and with what arguments?
> - HTMLElement and sub classes can't be constructed directly, what happens
> with them?
> - do you copy internal properties? this would make it hard to polyfill
> - how does it behave with getters and setters?
> - with regular expressions do you copy the lastIndex?
>
> Most of those apply to Object.equals also.
>
>
>
> On Mon, Nov 14, 2016 at 6:25 PM, Kevin Barabash 
> wrote:
>
> It would be nice if deep equality checking and deep cloning of objects was
> included in the standard library.  Has there been any proposals around
> including these in the past?
>
> – Kevin
>
>
> ___
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
> ___
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
> ___
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
___
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss


Re: Return value of forEach

2015-10-16 Thread Eric Devine
Array#map does the non-trivial operation of copying the entire array. In
the example for loging to the console, this behavior is unintended. Perhaps
an underscore-like tap method should be considered to be added to the Array
prototype for these cases.

On Fri, Oct 16, 2015 at 9:32 AM, Andrea Giammarchi <
andrea.giammar...@gmail.com> wrote:

> Like I've written before, if you need to return an array you can use map
> instead of forEach
>
> `arr.map(x => console.log(x) || x)`
>
> forEach has been like this since ever so while you wonder what kind of
> code would look like based on the fact forEach doesn't return  anything, I
> actually wonder how come there are still people expecting forEach to return
> something.
>
> So, it would be a breaking change and actually it's not needed since you
> have map.
>
> If the new Array, and for debugging purpose, is not desired, use `var log
> = DEBUG ? x => console.log(x) || x : x => x` and abuse it as much as you
> like.
>
> Would any of this work?
>
> Regards
>
>
>
> On Fri, Oct 16, 2015 at 2:23 PM, Niloy Mondal 
> wrote:
>
>> > That'd be a compatibility break.
>>
>> Ugh... you mean people actually depend on `forEach` returning `undefined`
>> (which it always does) to do further task?
>>
>> I wonder what that kinda code would look like >.<
>>
>> On Fri, Oct 16, 2015 at 6:08 PM, Frankie Bagnardi 
>> wrote:
>>
>>> That'd be a compatibility break.
>>>
>>> If we end up getting :: though:
>>>
>>> ```js
>>> function logEach(){
>>>   this.forEach((x) => console.log(x));
>>>   return this;
>>> }
>>>
>>>
>>> const a = [1, 2, 3]
>>>   .map(square)
>>>   ::logEach()
>>>   .map(plus1)
>>>   .reduce(add);
>>> ```
>>>
>>> You could make that a global variable so you can sprinkle it around your
>>> code in development.
>>>
>>> Having some developer tools in the language would be nice though. I
>>> don't even think console.log is in the spec. A global like Debug.logThis
>>> for example would be a more general ::-able.
>>>
>>>
>>> On Fri, Oct 16, 2015 at 5:32 AM, Andrea Giammarchi <
>>> andrea.giammar...@gmail.com> wrote:
>>>
 ```js
 const a = [1, 2, 3]
   .map(square)
   .map(x => console.log(x) || x )
   .map(plus1)
   .reduce(add);
 ```

 Regards


 On Fri, Oct 16, 2015 at 10:13 AM, Niloy Mondal <
 niloy.monda...@gmail.com> wrote:

> Currently, `Array.prototype.forEach` returns `undefined`. It would be
> more
> useful if it returns the array itself.
>
> Say I have written some code like this...
>
> ```js
> const a = [1, 2, 3]
>   .map(square)
>   .map(plus1)
>   .reduce(add);
> ```
>
> For some reason, I am not getting the expected output. For debugging,
> I would
> like the print the values after each step. My first initial reaction
> is to
> put a `forEach` step in between and print the values like so...
>
> ```js
> const a = [1, 2, 3]
>   .map(square)
>   .forEach(x => console.log(x))
>   .map(plus1)
>   .reduce(add);
> ```
>
> Unfortunately, this does not work as `forEach` returns `undefined`. I
> now have
> to comment out all the code below it. Having the _plug and play_
> behaviour for
> `forEach` would be very convenient.
>
> ___
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>

 ___
 es-discuss mailing list
 es-discuss@mozilla.org
 https://mail.mozilla.org/listinfo/es-discuss


>>>
>>
>
> ___
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
___
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss


Deep Object Observing

2013-12-23 Thread Eric Devine
New to the forum here.

I've been experimenting with the Polymer-Project prolyfill
Node.prototype.bind() function, and have rolled an implementation of my own
that is dependent on Object.observe and MutationObserver.

The function binds to a path relative to a given object, so it must not
only observe the descendant property, but it also must observe every object
between and be able to recursively reconstruct the chain if a link is
replaced, and recursively unobserve the replaced links.

The recursive function to accomplish this is simple enough, but the memory
footprint has the potential to become expensive when scaled.

I feel this feature is a good candidate for a native implementation. Is
there any plans to bring the concept of deep object observing to ES?

Thanks for your time,
Eric
___
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss