Denne artikel
http://www.quirksmode.org/js/this.html beskriver at funktioner grundlæggende altid peger på window, med mindre de har en parent i dom-træet: Så for de elementet som this.
Selv en rigtig objektorienteret funktion bliver overstyret med dom-elementet, i følgende demo.
Kør den og bemærk at this.id skifter værdi efter objektets kontekst, når du klikker på det øverste element.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "
http://www.w3.org/TR/html4/strict.dtd"><html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title></title>
<style type="text/css">
body { font-family: sans-serif;}
#clickableId { border: 3px outset lightgray; width: 100px; padding: 5px; }
#debugDiv { border: 1px solid red ;padding: 5px; width:200px;}
</style>
<script type="text/javascript">
function foo (I) {
this.id = I;
this.current = this;
this.bar = function () {
document.getElementById("debugDiv").appendChild(document.createElement('hr'));
document.getElementById("debugDiv").appendChild(document.createTextNode(this.id));
};
this.runfunction = function (func) {
(func)();
};
};
var myFoo = new foo("ObjectInstance 1 Id");
window.onload = function (){
myFoo.runfunction(myFoo.bar);
myFoo.bar();
document.getElementById("clickableId").onclick=myFoo.bar;
}
</script>
</head>
<body>
<div id="clickableId"> Do onClick</div>
<hr>
<div id="debugDiv">Debug:</div>
</body>
</html>
Det hjælper nok ikke på dit problem direkte, men det kan være du kommer på sporet, eller får dokumentere at det ikke kan laves som du forsøger, når det er javascript.