gruss Christian,
ah ja, sehr schoen ... ich sehe molily war schon vor mir am ball.
deshalb praezisiere ich nochmals:
c) [Object.prototype] laesst sich nicht ueberschreiben -
im sinne von: Object.prototype = new Irgendwas();
-
sondern nur erweitern, mit allen effekten, wie sie Dir molily
schon beschrieb.
wenn Du diese nicht in kauf nehemn moechtest, kaeme fuer Dich
nur noch schnittstellenvererbung in frage, welche in JavaScript
ueber delegation an die jedem [Function]-object zueigenen methoden
[apply] bzw. [call] abgebildet wird.
Du koenntest also einem wie auch immer gearteten basis-objekt
die von Dir gewuenschten methoden mitgeben. Deine durch objekt-
literale erzeugten anderen objekte rufen dann diese basis-objekt-
methoden in ihrem jeweils eigenen kontext auf - bsp.:
~~~javascript var holder = {
foo: "foo",
bar: "bar",
showFoo: function () {
alert(this.foo);
},
showBar: function () {
alert(this.bar);
}
};
var myFoo = {
foo: "myFoo"
};
var myBar = {
bar: "myBar"
};
alert(holder.foo); // "foo";
holder.showFoo(); // "foo";
alert(holder.bar); // "bar";
holder.showBar(); // "bar";
alert(myFoo.foo); // "myFoo";
holder.showFoo.call(myFoo); // "myFoo"; // ergebnis der methode [holder.showFoo] im kontext von [myFoo];
alert(myBar.bar); // "myBar";
holder.showBar.call(myBar); // "myBar"; // ergebnis der methode [holder.showBar] im kontext von [myBar];
by(t)e by(t)e - peterS. - pseliger@gmx.net
--
»Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive.« - [Douglas Crockford](http://javascript.crockford.com/)
ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]