JQuery源码解读 JQ的继承方法 (妙味讲堂 - 视频笔记 - 第二部分) jQury().fn = $().fn = function() { return jQuery.fn.init() } $("div").get() //返回集合 $("div").get(index) // 返回下标项,原生对象 get: function(num) { return num == null ? this.toArray() : (num < 0 ? this[this.length + num] : this[num]) } $("div").pushStack($("span")) // div,span对象都在栈内 返回的是 span对象 pushStack:function(elems){ var ret = jQuery.merge(this.constructor(),elems); //合并元素 ret.prevObject = this; ret.context = this.context //合并之后执行上下文是后者 return ret; } end:function(){ return this.prevObject||this.constructor(null) } slice:functon(){ return this.pushStack(core_slice.apply(this,arguments)) } eq:function(i){ var len = this.length, j = +i+(i<0?len:0); return this.pushStack(j>=0&&j<len?[this[j]]:[]) } $.extend() $.fn.extend() // 当只写一个对象自变量的时候,jQ中扩展对象插件的形式 // $.extend({ //扩展工具方法 aaa:function(){ alert(1) }, bbb: function(){ alert(2) } }) $.fn.extend({ //扩展jQ实例方法 aaa:function(){ alert(3) }, bbb: function(){ alert(3) } }) $.aaa() $.bbb() $().aaa() $().bbb() $.extend() this = $ $.fn.extend() this = $.fn // 当写多个对象的时候,后面的对象都是扩展到第一个对象身上 // // var a = {} $.extend(a,{name:"hello"},{age: 30}) a= {name:"hello",age: 30} // 还可以深拷贝,浅拷贝 // var a = {} var b = {name:"hello"} $.extend(a,b) //浅拷贝,对象引用 a.name.age = 20 $.extend(true,a,b) //深拷贝,对象复制,独立的两个对象 jQ中: 拷贝继承 构造函数的原型 JS :类继承/原型继承 new 构造函数 / {}
JQuery源码解读 JQ的继承方法 (妙味讲堂 - 视频笔记 - 第二部分)
原文:https://www.cnblogs.com/SunlikeLWL/p/11602457.html