Andrea Giammarchi wrote:
In such case the only concern would be why `Object.prototype` is considered but not inherited properties too.

Because NoSuchProperty is meant to be inserted just before Object.prototype, avoiding that loop.

What's more, the loop is unnecessary:

var NoSuchProperty = Proxy({}, {
  get: function(target, name, receiver) {
    while (target = Object.getPrototypeOf(target)) {
      if (name in target) {
        return Reflect.get(target, name, receiver);
      }
    }
    throw new TypeError(name + " is not a defined property");
  }
});


If NoSuchProperty is inserted just before Object.prototype on a chain of ordinary objects, its get handler won't be invoked until no such property is indeed found along the path from the original target to NoSuchProperty. Therefore all iterations but the last (where target is Object.prototype) are redundant.

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

Reply via email to