Object id, hash, etc?

Andrea Giammarchi andrea.giammarchi at gmail.com
Tue Sep 8 21:29:33 UTC 2015


as side note, that's just a lazy assignment that doesn't need two symbols
and a constant get invoke ...

```js
Symbol.identity = Symbol( 'Symbol.identity' );
var OBJECT_ID = 0;
Object.defineProperty(
  Object.prototype,
  Symbol.identity,
  {
    get: function () {
      // first time this is invoked ... and no more ...
      Object.defineProperty(this, Symbol.identity, {value: ++OBJECT_ID});
      // from now own, direct property access \m/
      return this[Symbol.identity];
    }
  }
);
```

Regards

On Tue, Sep 8, 2015 at 9:57 PM, Michael McGlothlin <
mike.mcglothlin at gmail.com> wrote:

> I try to keep it pretty simple. It's not fancy but the times you want fast
> and dirty information like this are the same times you don't want to have
> to define it manually.
>
>  Symbol.identity = Symbol( 'Symbol.identity' );
>  const identity = Symbol( 'identity' );
>  var OBJECT_ID = 0;
>  Object.defineProperty( Object.prototype, Symbol.identity, {
>   get: () => {
>    if ( !Object.hasOwnProperty.call( this, identity ) ) {
>     this[ identity ] = ++OBJECT_ID;
>    }
>    return this[ identity ];
>   }
>  } );
>
> On Tue, Sep 8, 2015 at 1:44 PM, Mark S. Miller <erights at google.com> wrote:
>
>> See Labeler at
>> http://wiki.ecmascript.org/doku.php?id=harmony:weak_maps#unique_labeler
>>
>>
>>
>> On Tue, Sep 8, 2015 at 11:16 AM, joe <joeedh at gmail.com> wrote:
>>
>>> Didn't send to list, something is wrong with my reply all. Sorry about
>>> that. Stupid mobile gmail.
>>> ---------- Forwarded message ----------
>>> From: "joe" <joeedh at gmail.com>
>>> Date: Sep 8, 2015 11:15 AM
>>> Subject: Re: Object id, hash, etc?
>>> To: "Garrett Smith" <dhtmlkitchen at gmail.com>
>>> Cc:
>>>
>>> I agree with this request. This is the logical complement to valueof, I
>>> think. And yes, for most ID use cases this isn't a good fit, but we're not
>>> talking about the general case, just the cases where a python style id()
>>> function *is* appropriate.
>>>
>>> Joe
>>> On Sep 8, 2015 9:08 AM, "Garrett Smith" <dhtmlkitchen at gmail.com> wrote:
>>>
>>>> On 9/8/15, Michael McGlothlin <mike.mcglothlin at gmail.com> wrote:
>>>> > Is there a reason not to provide an object id and hash value as other
>>>> > languages often do? I find myself defining an identity symbol on
>>>> objects
>>>> > with a value from a simple global counter. It makes it easier to
>>>> debug if I
>>>> > can just look at a log and see what objects and functions were active.
>>>> >
>>>> > Likewise a hash value would simplify a lot of comparisons and make it
>>>> easier
>>>> > to debug.
>>>> >
>>>> > I especially find the ID useful when working with bound functions as
>>>> they
>>>> > can be difficult to tell apart. I like to change toString() to
>>>> provide the
>>>> > ID followed by the code (flattened to one line).
>>>> >
>>>> >
>>>>
>>>> NFE's are safe to use where IE8 support isn't needed*.
>>>> (function aa(){}).name; // "aa"
>>>>
>>>> As for using Object IDs and Object Pooling, lexically-scoped values
>>>> have benefits over global ID generators (as your counter). The values
>>>> can be passed in as a parameter to the Factory (useful with Private
>>>> Proxy). There other benefits to this pattern regarding memory
>>>> management and application design. Contact me if you'd like to learn
>>>> more.
>>>>
>>>> * https://kangax.github.io/nfe/
>>>> --
>>>> Garrett
>>>> @xkit
>>>> ChordCycles.wordpress.com
>>>> garretts.github.io
>>>> personx.tumblr.com
>>>> _______________________________________________
>>>> es-discuss mailing list
>>>> es-discuss at mozilla.org
>>>> https://mail.mozilla.org/listinfo/es-discuss
>>>>
>>>
>>> _______________________________________________
>>> es-discuss mailing list
>>> es-discuss at mozilla.org
>>> https://mail.mozilla.org/listinfo/es-discuss
>>>
>>>
>>
>>
>> --
>>     Cheers,
>>     --MarkM
>>
>> _______________________________________________
>> es-discuss mailing list
>> es-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es-discuss
>>
>>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20150908/add4cb74/attachment.html>


More information about the es-discuss mailing list