jquery源码抽丝剥茧--把jquery最小化
程序员文章站
2022-04-11 07:55:32
...
js代码:
(function(){ var jQuery = window.jQuery = function( selector, context ) { return new jQuery.prototype.init( selector, context ); }; window.$ = jQuery; jQuery.fn = jQuery.prototype = { init: function( selector, context ) { var elem = document.getElementById(selector); if ( elem ) { this[0] = elem; this.length = 1; return this; } }, append: function() { alert(arguments[0]); } }; //为后面的实例化,将jQuery.prototype赋给jQuery.prototype.init.prototype,这个很重要 jQuery.prototype.init.prototype = jQuery.prototype; jQuery.extend = jQuery.fn.extend = function() { var target = arguments[0], length = arguments.length; if ( length == 1 ) { target = this; //这里很重要,this给target,才能使用$. i = 0; } if ( (options = arguments[0]) != null ) { for ( var name in options ) { if ( options[ name ] != undefined ) { target[ name ] = options[ name ]; } } } return target; }; jQuery.extend({ isFunction: function( fn ) { return !!fn && typeof fn != "string" && !fn.nodeName && fn.constructor != Array && /function/i.test( fn + "" ); } }); })();
html代码:
<html> <head> <script type="text/javascript" src="jmin.js"></script> </head> <body> <div id="did"></div> <script type="text/javascript"> function f(){}; $("#did").append("<div>append</div>"); alert($.isFunction(f)); </script> </body> </html>
推荐阅读