jquery源码阅读笔记2:无new关键词创建对象

蛰伏已久 蛰伏已久 2018-05-14

一般情况下,我们实例化一个对象的时候都是通过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)