brug af .this til at referere til parent object fra event kode
Mit problem er demonstreret i koden neden for.Jeg har en constuctor til et object (myObject)
denne constructor har noget data (this.string) og en metode (this.method).
Når siden er loadet instantierer jeg et object (myObjectInstance) med constructoren (myObject).
Jeg vil nu have adgang til myObjectInstance.string fra metoden myObjectInstance.method(), og som det ses i metoden, prøver den at få adgang til string variablen ved at referere til den med this.string.
Dette virker også fortræffeligt, hvilket demonstreres med en alert så snart siden er loadet.
Problemet opstår når myObjectInstance.method() kaldes fra en browser event (her documen.onmousedown).
Som det ses hvis man klikker på siden, kan this.string ikke længere bruges til at få fat i string dataen.
Dette kan omgås med en statisk reference som også er demonstreret i eksemplet, men det virker selfølgelig ikke hvis man instantierer objectet flere gange.
Hvordan kommer jeg uden om dette problem?
Eksempel:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<script type='text/javascript'>
function myObject() {
this.string = "the info";
this.method = function() {
var me = myObjectInstance;
alert("Using 'this' returns: ["+this.string+"] But using a static reference returns: ["+me.string+"]");
}
}
var myObjectInstance;
function pageInit() {
myObjectInstance = new myObject();
document.onmousedown = myObjectInstance.method;
myObjectInstance.method();
}
</script>
</head>
<body onload='pageInit()'>
</body>
</html>
