Da muss ich dir leider unrecht geben. Methoden, die innerhalb des Konstruktors definiert sind, machen für mich den Code nur unleserlicher und schlechter zu verstehen und zu warten. Closures machen die Sache eben nicht einfacher.
Nachtrag: Wenn es dir nur darum geht, die Methoden irgendwo einheitlich zu sammeln, ist ja vielleicht das hier was für dich:
var MyClass=(function(){
// Helper function, should be outsourced.
function bind(obj, priv, func){
return function(){
var args=[priv];
for (var i=0,l=arguments.length;i<l;i++){
args.push(arguments[i]);}
return func.apply(obj, args);}}
// Constructor
function C(){
var priv={x:Math.random()};
this.toString=function(){return '[C x='+priv.x+']';};
for (var method in privateMethods){
priv[method]=bind(this, priv, privateMethods[method]);}
for (var method in privilegedMethods){
this[method]=bind(this, priv, privilegedMethods[method]);}}
// Private methods
var privateMethods={
setX: function(priv, x){
priv.x=x;}};
// Privileged methods
var privilegedMethods={
getX:function(priv){
return priv.x;},
mulX:function mulX(priv, factor){
priv.x*=factor;
return this;}};
// Unprivileged methods
C.prototype={
getDoubleX:function getDoubleX(){
return this.getX()*2;}};
return C;
})();
--
Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|
Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.
Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|