On 17.12.2011 17:21, Herby Vojčík wrote:
Hello,
from my point the scenario that:
delete lib.toRussianName;
then it still:
typeof lib.toRussianName; // "function", Trollface ;D
is much more acceptable (it happens everyday - there are non-writable
properties everywhere),
Yes, good point on non-configurable properties. So, we may justify this
broken invariant with `delete' which becomes not so broken. it's good.
Agreed.
than the scenario where I cannot transform
lib.toRussianName("Andrea"); // Андрей
into
var toRussianName = lib.toRussianName;
toRussianName.apply(null, ["Andrea", "Alex"]); // error,
"toRussianName" is undefined
That's why I proposed first-class phantoms in gist: beasts that typeof
to "phantom", ToBoolean to false, ToNumber to 0, are wrapping a
function, [[Call]] calls that function, [[Get]] and [[Prototype]]
delegates to that function ([[Class]] is questionable) and rest does
not work ([[Set]] silently fails etc.). And the ability to return them
from any code, not just proxies.
This is by the way, may also be an interesting idea. You mean "phantom"
is the function returned from `get' or it for "non-existing" method in
case of noSuchMethod is used?
Dmitry.
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss