You almost had it, you need to set the this
reference inside of the old size
function to be the this
reference in the override function, like this:
var oSize = jQuery.fn.size;
jQuery.fn.size = function() {
alert(this.length);
// Now go back to jQuery's original size()
return oSize.apply(this, arguments);
};
The way this works is Function
instances have a method called apply
, whose purpose is to arbitrarily override the inner this
reference inside of the function's body.
So, as an example:
var f = function() { console.log(this); }
f.apply("Hello World", null); //prints "Hello World" to the console
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…