Reifying References?
# Brendan Eich (14 years ago)
This is a big de-optimizer without a sigil or mode to identify references. I don't think it will fly. It lacks compelling use-cases. The last one was VB-ish
foo.items(i) = bar
callable lvalues, allowed to return References if the callable is a host object, but deprecated or in the process of being deprecated (thanks to Sam Weinig for removing non-document.all [caller] uses in WebKit's IDL).
# Dmitry Soshnikov (14 years ago)
What are use-cases? C++ has references as a sugar for "dereferenced pointer", but other languages leaved this approach because of confusions (mostly with memory operations). Don't think we need them much.
Though, you still may to update your var passing base object (and in Rhino even for local vars of function having access to the activation object).
Dmitry.
Any thoughts on whether it might make sense to reify References [8.7 in the ECMAScript 5 specification] in the language proper?
E.g. via a function ref() (as a strawman – not really syntactically viable).
Applications:
Pass a variable by reference: function incReference(r) { if (! (r instanceof Reference)) { throw new TypeError(); } r++; } incReference(ref(foo.bar.baz)); incReference(ref(myVar));
Data binding
More options for the lhs of an assignment (advanced collections...)
Possibly: simplify some of the getter/setter APIs, but it’s probably too late for that, because this approach has become standard.