« Bugzilla Issues Index

#1270 — Naming of MOP operations that access/mutate [[Prototype]]

tomvc says:

[[GetInheritance]]/[[SetInheritance]] => why not [[GetProto]]/[[SetProto]]?
- More familiar to ECMAScript programmers
- No risk of confusion with function "prototype" property
- For ordinary objects, [[GetInheritance]] returns the value of the [[Prototype]] field

My thinking is that in the presence of proxies (and the proto-climbing changes to the MOP) that inheritance isn't actually solely defined via [[Prototyupe]]. that's how ordinary objects do it, but it is easy enough to define a proxy based object (or some other form of exotic object) that doesn't use [[Prototype]] to represent its inheritance structure.

I understand. However, simply because the internal method is named [[GetProto]] doesn't mean that it must be a simple getter for [[Prototype]]. It could be arbitrarily complex, as you note, but that's why we introduce an internal method rather than internal attribute. The name [[GetProto]] would hint better at what the "default implementation" does, IMHO.

In any case, feel free to use your judgment as the spec editor on what terminology fits best. I'm fine either way.

fixed in rev19