Brendan Eich wrote: > There's no point in Visible if the property could be deleted > altogether. What would be the difference?
Oops! Sorry! Lacking low-level insight I didn't think of that. So my idea has no bearing at all on the inherent problems, much less solved them. Too bad. > That's not this __proto__ case, which anyway > depends on a suspect predicate (the "need" for __proto__). Better to > settle the predicate issue first, and avoid adding general mechanism > prematurely. I think the only situation where I repeatedly feel a real, serious need for something like a writable __proto__ is the one I showed. Specifying inheritance is too spread out and too intricate. Most of all I want the constructor to define its own inheritance, not some outside code. Having to set .prototype in an unrelated expression outside, with the constructor reduced to a powerless bystander, feels like I'm writing a goto. It's too unstructured. Is your objection to __proto__ similar to this? Is __proto__ an inheritance goto? If that's the kind of problem it creates I agree that it doesn't belong in this language. If that's the case, would a writable __proto__ become well- structured if it could be accessed only from inside the constructor, and not by any other code? That's the only way I'd use it anyway. I'd love to have constructors that could write to their [[Prototype]]. But if that isn't possible I'd be almost as happy if we simply had the option to set both the prototype and its constructor property in one compound statement: function $MyConstructor() prototype MySuperInstance { ... } For me this would generally be the best arrangement, and I suppose it's the same for most people. Not having analyzed all the details, it /seems/ to me that the ideal would be that the above syntax lock and hide [[Prototype]], while a different syntax for exotic use would allow the constructor added freedom. -- Ingvar von Schoultz ------- (My quirky use of capitals in code comes from my opinion that reserved and predefined words should all start with lowercase, and user-defined should all start with uppercase, because this will easily and elegantly prevent a host of name-collision problems when things like programming languages are upgraded with new labels.) _______________________________________________ Es4-discuss mailing list Es4-discuss@mozilla.org https://mail.mozilla.org/listinfo/es4-discuss