jquery源码阅读笔记2:无new关键词创建对象
一般情况下,我们实例化一个对象的时候都是通过new关键词 var li=new Person("li"),而在使用jquery时,我们却是直接使用的,这样jquery用起来很方便
$("#id").hide();
我们来看一下jquery的实例化核心代码
jQuery = function( selector, context ) { // The jQuery object is actually just the init constructor 'enhanced' // Need init if jQuery is called (just allow error to be thrown if not included) return new jQuery.fn.init( selector, context ); }, ..... init = jQuery.fn.init = function( selector, context, root ) {} ...... jQuery.fn = jQuery.prototype = { ...... } init.prototype = jQuery.fn;
在我们进行实例化时,实际是实例化jQuery.fn.init,而jQuery.fn.init.prototype=jQuery.fn指,实例化的对象的原型为jQuery.fn,也就是实例化的对象可以调用jQuery.fn下的方法
这里对比一下另一个常用的js库,swiper.js的实例化过程,同样实现了,不需要new关键词实例化对象
var Swiper = function (container, params) { if (!(this instanceof Swiper)) return new Swiper(container, params); }
instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例
点赞(0)