Added in jQuery.proxy(obj, name), like the method described in Secrets of the JavaScript Ninja and in Dojo's Hitch, and added in some unit tests.
This commit is contained in:
parent
a5dbca4a06
commit
1d2b1a57da
2 changed files with 37 additions and 7 deletions
25
src/core.js
25
src/core.js
|
@ -618,17 +618,28 @@ jQuery.extend({
|
|||
guid: 1,
|
||||
|
||||
proxy: function( fn, proxy, thisObject ) {
|
||||
if ( arguments.length === 2 && proxy && !jQuery.isFunction( proxy ) ) {
|
||||
thisObject = proxy;
|
||||
proxy = undefined;
|
||||
if ( arguments.length === 2 ) {
|
||||
if ( typeof proxy === "string" ) {
|
||||
thisObject = fn;
|
||||
fn = thisObject[ proxy ];
|
||||
proxy = undefined;
|
||||
|
||||
} else if ( proxy && !jQuery.isFunction( proxy ) ) {
|
||||
thisObject = proxy;
|
||||
proxy = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
proxy = proxy || function() {
|
||||
return fn.apply( thisObject || this, arguments );
|
||||
};
|
||||
if ( !proxy && fn ) {
|
||||
proxy = function() {
|
||||
return fn.apply( thisObject || this, arguments );
|
||||
};
|
||||
}
|
||||
|
||||
// Set the guid of unique handler to the same of original handler, so it can be removed
|
||||
proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
|
||||
if ( fn ) {
|
||||
proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
|
||||
}
|
||||
|
||||
// So proxy can be declared as an argument
|
||||
return proxy;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue