From: Joachim L. <lu...@ho...> - 2000-12-12 17:28:14
|
At 2000-12-12 14:01 , you wrote: >> For example the ListItem class: >> >> function ListItem(text,value) >> { >> this.superClass = Label; >> this.superClass(text); >> this.value = value; >> ... >> } >> ListItem.prototype = new Label(); >> >> Perfect, except for the fact that one object is wasted to set the >> prototype. > >There's always the option of leaving out the last line if the extra >object is a problem. For me it's no problem, as long as I keep in mind the implications of it. >It would only mean that if you made changes to Label.prototype at >runtime, it wouldn't affect ListItem.prototype > >That could either be a good thing or a bad thing, depending what >you want. For me personally this would be a very bad thing... I depend on the classes be subclassable to extend the functionality, among other things. >I'm not sure what the problem with the extra objects is, but you >could make your extra objects identifiable by setting the ID: > > ListItem.prototype = new Label('protoListItem'); > >SD The whole point I was trying to make is that the prototype is A Good Thing (well...) and using object creators as constructors make the JavaScript language in this way even more object-oriented. It's true there is a (small) performance penalty but the added functionality is well worth it in my opinion. The biggest drawback IMHO with JS for now is the lack of private/public/protected properties and methods. Instance variables can be kludged however. Even though the next revision of the language will have classes (finally!) they can't be used in cross-browser environments. /Lunna |