MethodenTester: benannte Methoden

Beitrag lesen

Ich bin heute durch Rumprobieren auf ein Verhalten von Javascript gestoßen, dass ich nicht ganz verstehe.
ClassA hat zwei Methoden, von denen eine benannt ist, die andere nicht.
Beide tun das Gleiche, sie rufen foo(). Es wird jedoch einemal die Object-methode foo() aufgerufen, die "2222222" ausgibt und einmal die funktion foo(), die "1111111" ausgbit.
Wie kommt es, dass die Object-methode foo aufgerufen wird?
Was passiert genau, wenn ich einer methode einen Namen verpasse (siehe methodX)?

  
  
function foo(){  
 alert("1111111111");  
}  
  
Object.prototype.foo = function(){  
 alert("22222222222");  
}  
  
  
  
function ClassA(){  
 this.methodX = function methodX(){  
  foo();  
 }  
 this.methodY = function(){  
  foo();  
 }  
}  
  
  
var c = new ClassA();  
c.methodX();  
c.methodY();