Das funktioniert nicht.
this.doSomething ist in der click Funktion undefiniert.
Ja, da wird es ja auch nicht aufgerufen. Du hast gesehen, dass das Objekt myTestObj im scope window existiert? Damit existiert zum Zeitpunkt BODY.onload auch myTestObj.init() und das hinterlegt, durch die Zwischenspeicherung in methodRef, als onclick praktisch
Mir ist schon klar was erreicht werden soll, ich hab jetzt auch den Fehler gefunden, das Problem an dem Ansatz ist aber, das in doSomething this nicht das Object ist. D.h. der Aufruf nützt erstmal herzlich wenig.
Daher meine Empfehlung lieber dem event Objekt this mitzugeben:
[code lang=javascript]
<script type="text/javascript">
function TestClass(linkName)
{
this.className = linkName;
this.doSomething = function() { alert('testParam: '+ this.className); };
this.init = function()
{
document.getElementById(linkName).obj = this;
document.getElementById(linkName).onclick =
function () { this.obj.doSomething() ; }
};
}
var myTestObj = new TestClass('testLink');
var myTestObj2 = new TestClass('testLink2');
window.onload= function () { myTestObj.init(); myTestObj2.init(); };
</script>
</head>
<body >
<a href="#" id="testLink">Test</a>
<a href="#" id="testLink2">Test</a>
</body>
</html>
[/cdoe]
Struppi.