Allen rightly has pointed out several times on es-discuss that WeakMaps require GC special handling and are costly, compared to private symbols. This is true not only for GC time, but especially for get/set runtime. Properties named by Symbols, when implemented, should have the same polymorphic-inline-caching-or-better fast paths as string-key properties.

/be

Brandon Benvie wrote:
At the very least, WeakMaps are potentially usable today (depending on the target audience) while symbols are nowhere in sight. I’ve gotten a lot of mileage out of this function, which as you said provides a similar effective result as symbols (they differ in that the WeakMap version isn’t inherited):
    function createStorage(creator){
      var store = new WeakMap;
      creator || (creator = Object.create.bind(null, null, {}));

      return function(obj){
        var priv = store.get(obj);
        if (!priv) store.set(obj, priv = creator(obj));
        return o;
      };
    }
    // usage
    var _ = createStorage();
    function Ctor(val){
      _(this).private = val;
    }
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to