From 8e4057da755f2e343c78cddc5a40ba0910d19233 Mon Sep 17 00:00:00 2001 From: Claude Pache Date: Thu, 11 Feb 2016 17:52:39 +0100 Subject: [PATCH] spec for __define[GS]etter__ and __lookup[GS]etter__ Based on https://gist.github.com/anba/9140946#jsc-sourcejavascriptcoreruntimeobje ctprototypecpp --- spec.html | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/spec.html b/spec.html index 95472fb2c9..e29fd98f09 100644 --- a/spec.html +++ b/spec.html @@ -36111,6 +36111,64 @@

set Object.prototype.__proto__

+ + +

Object.prototype.__defineGetter__ (_P_, _getter_)

+

When the `__defineGetter__` method is called with arguments _P_ and _getter_, the following steps are taken:

+ + 1. Let _O_ be ? ToObject(*this* value). + 1. If IsCallable(_getter_) is *false*, throw a *TypeError* exception. + 1. Let _desc_ be PropertyDescriptor{[[Get]]: getter, [[Enumerable]]: *true*, [[Configurable]]: *true*}. + 1. Let _key_ be ? ToPropertyKey(_P_). + 1. Perform ? DefinePropertyOrThrow(_O_, _key_, _desc_). + 1. Return *undefined*. + +
+ + +

Object.prototype.__defineSetter__ (_P_, _setter_)

+

When the `__defineSetter__` method is called with arguments _P_ and _setter_, the following steps are taken:

+ + 1. Let _O_ be ? ToObject(*this* value). + 1. If IsCallable(_setter_) is *false*, throw a *TypeError* exception. + 1. Let _desc_ be PropertyDescriptor{[[Set]]: _setter_, [[Enumerable]]: *true*, [[Configurable]]: *true*}. + 1. Let _key_ be ? ToPropertyKey(_P_). + 1. Perform ? DefinePropertyOrThrow(_O_, _key_, _desc_). + 1. Return *undefined*. + +
+ + +

Object.prototype.__lookupGetter__ (_P_)

+

When the `__lookupGetter__` method is called with argument _P_, the following steps are taken:

+ + 1. Let _O_ be ? ToObject(*this* value). + 1. Let _key_ be ? ToPropertyKey(_P_). + 1. Repeat + 1. Let _desc_ be ? O.[[GetOwnProperty]](_key_). + 1. If _desc_ is not *undefined*, then + 1. If IsAccessorDescriptor(_desc_) is *true*, return _desc_.[[Get]]. + 1. Return *undefined*. + 1. Let _O_ be ? _O_.[[GetPrototypeOf]](). + 1. If _O_ is *null*, return *undefined*. + +
+ + +

Object.prototype.__lookupSetter__ (_P_)

+

When the `__lookupSetter__` method is called with argument _P_, the following steps are taken:

+ + 1. Let _O_ be ? ToObject(*this* value). + 1. Let _key_ be ? ToPropertyKey(_P_). + 1. Repeat + 1. Let _desc_ be ? O.[[GetOwnProperty]](_key_). + 1. If _desc_ is not *undefined*, then + 1. If IsAccessorDescriptor(_desc_) is *true*, return _desc_.[[Set]]. + 1. Return *undefined*. + 1. Let _O_ be ? _O_.[[GetPrototypeOf]](). + 1. If _O_ is *null*, return *undefined*. + +