O
Oltmans
Hi all,
I'm stuck in a situation where I need help. Any help will be highly
appreciated. I've created an object, after creating the object, I'm
assigning one of its functions to an event handler i.e. to onBlur
event of Text-area. Problem is that when I try to access object
properties from the handler function, I cannot access them in some
cases and get a value of undefined. Here is the sample code that I'm
trying
METHOD A:
---------
function TestObj(src, dest){
this.src = src;
this.dest= dest;
this.count = 500;
}
TestObj.prototype.display=function(){
//following displays 'undefined'
alert("Source ="+this.src+", Destination ="+this.dest);
//following also displays 'undefined'
alert('Count ='+this.count);
}
and here is how I'm using the above (using JQuery)
$(document).read(function(){
var t=new TestObj(50,100);
$("#tarea1").blur(t.display);
});
But when I do the following using Object literal , things seem to work
OK
METHOD B
--------
var TestObj={
display:function(src,dest){
return function(){
alert("Source ="+this.src+", Destination ="+this.dest);
}
}
};
$(document).read(function(){
//This works and I see values of 50 & 100 in the alert box
$("#tarea1").blur(TestObj.display(50,100));
});
Amazingly following also works
METHOD C:
---------
function TestObj(){
}
TestObj.prototype.display=function(src,dest){
return function(){
alert("Source ="+this.src+", Destination ="+this.dest);
}
}
and here is how I'm using the above (using JQuery)
$(document).read(function(){
var t=new TestObj();
$("#tarea1").blur(t.display(5,10));
});
Actually, I want to go with the Function object approach mentioned
under METHOD C, but I'm also trying to avoid the closure in " display
" function as I've read on Internet that it can cause memory leaks in
IE6. Any ideas on how to make METHOD C work while avoiding a closure.
Also, if you can give a reason as to why METHOD A isn't working that
will be highly appreciated.
Thanks in advance.
Regards,
Oltmans
I'm stuck in a situation where I need help. Any help will be highly
appreciated. I've created an object, after creating the object, I'm
assigning one of its functions to an event handler i.e. to onBlur
event of Text-area. Problem is that when I try to access object
properties from the handler function, I cannot access them in some
cases and get a value of undefined. Here is the sample code that I'm
trying
METHOD A:
---------
function TestObj(src, dest){
this.src = src;
this.dest= dest;
this.count = 500;
}
TestObj.prototype.display=function(){
//following displays 'undefined'
alert("Source ="+this.src+", Destination ="+this.dest);
//following also displays 'undefined'
alert('Count ='+this.count);
}
and here is how I'm using the above (using JQuery)
$(document).read(function(){
var t=new TestObj(50,100);
$("#tarea1").blur(t.display);
});
But when I do the following using Object literal , things seem to work
OK
METHOD B
--------
var TestObj={
display:function(src,dest){
return function(){
alert("Source ="+this.src+", Destination ="+this.dest);
}
}
};
$(document).read(function(){
//This works and I see values of 50 & 100 in the alert box
$("#tarea1").blur(TestObj.display(50,100));
});
Amazingly following also works
METHOD C:
---------
function TestObj(){
}
TestObj.prototype.display=function(src,dest){
return function(){
alert("Source ="+this.src+", Destination ="+this.dest);
}
}
and here is how I'm using the above (using JQuery)
$(document).read(function(){
var t=new TestObj();
$("#tarea1").blur(t.display(5,10));
});
Actually, I want to go with the Function object approach mentioned
under METHOD C, but I'm also trying to avoid the closure in " display
" function as I've read on Internet that it can cause memory leaks in
IE6. Any ideas on how to make METHOD C work while avoiding a closure.
Also, if you can give a reason as to why METHOD A isn't working that
will be highly appreciated.
Thanks in advance.
Regards,
Oltmans