The simplest:
function MyObject() {
}
MyObject.prototype.myFunctionA = function() {
}
MyObject.prototype.myFunctionB = function(arg) {
var me = this;
$.get('script.php', { par : arg }, function(data) {
});
}
reuse (using area capture):
function createDelegate(obj, handler)
{
return function() {
handler.apply(obj, arguments);
}
}
then
MyObject.prototype.myFunctionB = function(arg) {
var me = this;
$.get(
'script.php',
{ par : arg },
createDelegate(this, function(data) {
})
);
}
So, some code regarding the comments below, createDelegate can also be used in several ways, one of which is:
function createDelegate(obj, handler)
{
handler = handler || this;
return function() {
handler.apply(obj, arguments);
}
}
Function.prototype.createDelegate = createDelegate;
this allows you to do things like:
var someObj = {a:1, b:function() {return this.a;}};
var scopedDelegateForCallback = someObj.b.createDelegate(whateverobj)
you can do tricks to get a parent too, but it's too much for me to worry with atm.
or you can do something like this:
function createDelegate(handler, obj)
{
obj = obj || this;
return function() {
handler.apply(obj, arguments);
}
}
Object.prototype.createDelegate = createDelegate;
and use it:
someObj.createDelegate(someObj.b);
or maybe:
function createDelegateForMember(handlerName, obj)
{
obj = obj || this;
return function() {
obj[handlerName].apply(obj, arguments);
}
}
Object.prototype.createDelegate = createDelegateForMember;
then
someobj.createDelegate("b");