菜鸟读jQuery 2.0.3 源码分析系列(1)

原文链接在这里,作为一个菜鸟,我就一边读一边写

jQuery 2.0.3 源码分析系列

前面看着差不多了,看到下面一条(我是真菜鸟),推荐木有入门或者刚刚JS入门摸不着边的看看,大大们手下留情,想一起学习JS的可以给我留言。

// Give the init function the jQuery prototype for later instantiation
jQuery.fn.init.prototype = jQuery.fn;

  看到这里的时候有点迷茫啊。这个fn是啥玩意,百思不得其姐。最后只能找度娘了

jQuery.fn = jQuery.prototype = {      init: function( selector, context ) {//….    //……   
};   

然后发现,fn就是prototype 文章来源 jquery.fn.extend与jquery.extend

上面的意思其实就是

jQuery.prototype.init.prototype = jQuery.prototype;

往下走

aQuery.prototype = {init: function() {return this;},name: function() {return this}
}

明显实现链式的基本条件就是实例this的存在,并且是同一个

换句话说,就是被jQuery的方法处理之后,返回的对象还是处理之前的对象(初学者这么理解会好理解一些)。

extend的实现,我就只把英文翻译成中文- -,这个能看懂就能看懂,我明天整理了,再后面写下分析,其实说的已经很详细了。。

jQuery.extend = jQuery.fn.extend = function() {var src, copyIsArray, copy, name, options, clone,target = arguments[0] || {},    // 常见用法 jQuery.extend( obj1, obj2 ),此时,target为arguments[0]i = 1,length = arguments.length,deep = false;// Handle a deep copy situation//处理深拷贝情况if ( typeof target === "boolean" ) {    // 如果第一个参数为true,即 jQuery.extend( true, obj1, obj2 ); 的情况deep = target;  // 此时target是truetarget = arguments[1] || {};    // target改为 obj1// skip the boolean and the targeti = 2;}// Handle case when target is a string or something (possible in deep copy)//处理案例时当目标是字符串或者什么其他的东西(可能是在深拷贝中)if ( typeof target !== "object" && !jQuery.isFunction(target) ) {  // 处理奇怪的情况,比如 jQuery.extend( 'hello' , {nick: 'casper})~~target = {};}// extend jQuery itself if only one argument is passed//继承jQuery对象自己,如果它只有一个参数传递if ( length === i ) {   // 处理这种情况 jQuery.extend(obj),或 jQuery.fn.extend( obj )target = this;  // jQuery.extend时,this指的是jQuery;jQuery.fn.extend时,this指的是jQuery.fn--i;}for ( ; i < length; i++ ) {// Only deal with non-null/undefined values//只处理值 non-null/undefined if ( (options = arguments[ i ]) != null ) { // 比如 jQuery.extend( obj1, obj2, obj3, ojb4 ),options则为 obj2、obj3...// Extend the base object//继承基础对象for ( name in options ) {src = target[ name ];copy = options[ name ];// Prevent never-ending loop//防止无休止的循环if ( target === copy ) {    // 防止自引用,不赘述continue;}// Recurse if we're merging plain objects or arrays// 如果是深拷贝,且被拷贝的属性值本身是个对象if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {if ( copyIsArray ) {    // 被拷贝的属性值是个数组copyIsArray = false;clone = src && jQuery.isArray(src) ? src : [];} else {    被拷贝的属性值是个plainObject,比如{ nick: 'casper' }clone = src && jQuery.isPlainObject(src) ? src : {};}// Never move original objects, clone them//不移动原对象,克隆他们target[ name ] = jQuery.extend( deep, clone, copy );  // 递归~// Don't bring in undefined values//不传undefined值} else if ( copy !== undefined ) {  // 浅拷贝,且属性值不为undefinedtarget[ name ] = copy;}}}}// Return the modified object//返回修改后的对象return target;

下一次有空再看一遍以防忘记。

@北川 老师勿喷

欢迎各位留言互相学习。

恩,能看懂多少看多少把,还有一些,在后面的文章里面会看到。到时候有相关的内容,回头再看这个。收益会更大

 

转载于:https://www.cnblogs.com/nunn/p/3511457.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全国首套中小学生人工智能教材在沪亮相

来源&#xff1a;网络大数据中小学 AI 教材正式亮相11 月 18 日&#xff0c;优必选与华东师范大学出版社共同发布了《AI 上未来智造者——中小学人工智能精品课程系列丛书》&#xff08;以下简称“AI 上未来智造者”丛书&#xff09;。据了解&#xff0c;该丛书根据教育部“义务…

numpy基础知识点

1. np.squeeze 一,np.squeeze """ np.squeeze 删除单维度的条 对多维度无效 """ import numpy as np anp.array([[1,2],[3,4],[4,5]]) print(a) print(a.shape) bnp.squeeze(a) print(b) ca.reshape(1,6,1) print(c) print(np.squeeze(c)) pri…

从智能交通到智能能源:智慧城市在7个方面的应用实践

来源&#xff1a;资本实验室目前&#xff0c;智慧城市已经成为全球众多城市未来规划和设计的方向&#xff0c;并致力于通过各种新技术的应用来改善城市居民的工作与生活。但什么样的技术应用能够推动智慧城市的建设&#xff1f;如何让新技术在智慧城市中的应用效率最大化&#…

Mac eclipse找不到source的解决办法

因为要搞hadoop&#xff0c;最终还是逃不过写java的命运。。。 eclipse里想查具体函数源代码时&#xff0c;如果报错说找不到源&#xff1a; 试试ls -l which java&#xff0c;在这个目录周围看看能不能找到src.zip。实在找不到就放弃吧&#xff0c;别折腾疯了&#xff0c;去下…

别以为if slse很简单——决策树

怎么分——熵与Gini指数 熵&#xff0c;表示信息量的期望&#xff0c;含义是混乱程度&#xff0c;也是对随机变量编码所需的最小比特数。请参考之前的文章。 信息增益建立在熵之上&#xff0c;是选择某特征之后熵减少的多少&#xff08;熵减少即信息增加&#xff09;&#xf…

tensorflow实现回归

直线拟合&#xff1a;yw*xb """ 回归:直线拟合 """ import tensorflow as tf import numpy as np import matplotlib.pyplot as plt x_datanp.random.rand(100) y_datax_data*51Wtf.Variable(0.) btf.Variable(0.) y_predW*x_databxtf.placehol…

微软亚研院20周年独家撰文:数据智能的现在与未来

文&#xff1a;微软亚洲研究院软件分析组来源&#xff1a;雷锋网摘要&#xff1a;今年是微软亚洲研究院&#xff08;MSRA&#xff09;20周年&#xff0c;站在这个大节点上&#xff0c;MSRA副院长张冬梅以及她的团队写了这篇有关数据智能的文章&#xff0c;对该领域的发展和未来…

二维与三维之间的桥梁——点云

在做图像配准时就听闻过一些点云的方法&#xff0c;却没对其有太多的认识&#xff0c;只是知道点云point cloud顾名思义就是一些离散点的集合。现在在无人驾驶中一些激光雷达的作用其实就是生成点云数据&#xff0c;接下来介绍一下点云数据的含义和基础的使用方法。 虽然特斯拉…

python刷题+leetcode(第一部分)

1. 设计前中后队列 思路:python代码直接利用list的insert特性 class FrontMiddleBackQueue:def __init__(self):self.queque []def pushFront(self, val: int) -> None:self.queque.insert(0, val)def pushMiddle(self, val: int) -> None:self.queque.insert(len(self…

LINQ基础概述

介绍LINQ基础之前&#xff0c;首说一下LINQ 的历史和LINQ是什么&#xff0c;然后说一下学习 LINQ要了解的东西和 LINQ基础语法LINQ 的历史从语言方面的进化 –委托 –匿名方法 –Lambda表达式 –Linq查询表达式 上边这四个我会在下边一一解说 从时间方面的演进 –2004年 –2005…

机器人“快递小哥”上岗了!京东配送机器人编队长沙亮相

11 月 22 日上午&#xff0c;京东物流配送机器人智能配送站启用仪式在长沙举行&#xff0c;随着载有用户订单的配送机器人编队从站内依次发出&#xff0c;全球首个由机器人完成配送任务的智能配送站正式投入使用。首个京东配送机器人智能配送站位于长沙市科技新城&#xff0c;占…

3D打印技术如何影响未来

来源&#xff1a;学习时报我们应该对3D打印技术保持谨慎态度&#xff0c;但过度反应和监管也可能会扼杀创新。历史经验表明&#xff0c;在技术的不利一面被应用之前进行规范构建对话是最有效的。因此&#xff0c;各国际主体&#xff0c;包括国家、商业领袖、政府官员和其他政策…

HDR简单介绍

问题定义 HDR字面意思是高动态范围High Dynamic Range&#xff0c;而动态范围是高图像质量的五个要素之一&#xff08;其余是1. 分辨率&#xff0c;2.位深度&#xff0c;3.帧速率&#xff0c;4.色域&#xff09;,而画质直接关系到人眼的主观感受。 如果将动态范围理解为量化的…

争议中挺进全新里程——中国“超级对撞机”《概念设计报告》发布侧记

来源&#xff1a;科技导报2018 年11 月12 日下午6 点半&#xff0c;北京市玉泉路&#xff0c;中国科学院高能物理研究所&#xff0c;所有建筑和行人沐浴在初冬夜晚的清冷与安静之中。不同的是&#xff0c;主楼西侧一座新楼的大厅里&#xff0c;却充满了热望和兴奋。这里正进行着…

如何才能成为真正的程序员

一个真正的程序员&#xff0c;必然是可以根据自己的意愿进行创造的程序员。一个真正的程序员&#xff0c;是不会甘于成为一个枪手的&#xff0c;更不会只想做一个码农&#xff0c;我们是创造者&#xff0c;就算迫于无奈暂时做为一个码农&#xff0c;也永远无法改变我们的本性。…

haar级联分类器--人脸检测和匹配

分类器链接&#xff0c;https://download.csdn.net/download/fanzonghao/10582586 代码&#xff1a; import numpy as np import cv2# 实例化人脸分类器 face_cascade cv2.CascadeClassifier(./haarcascades/haarcascade_frontalface_default.xml) # 实例化眼睛分类器 eye_c…

社会科技奖不是新鲜事?如何真正做大

来源&#xff1a;中国科学报我国的社会力量设立科学技术奖励起步于上世纪80年代。科技部网站上2018年9月5日更新的《社会科技奖励目录》显示&#xff0c;目前我国共有269个社会科技奖项登记在册&#xff0c;其中最后一个正是未来科学大奖。11月18日&#xff0c;2018未来科学大奖…

Spring Cache 配置及一些问题的解决

配置 1. applicationContext.xml <beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:cache"http://www.springframework.org/schema/cache"xsi:schemaLocation"ht…

泊松融合——用了拉普拉斯但没有金字塔

图像融合的方式有alpha融合&#xff0c;拉普拉斯金字塔融合。 同样是基于拉普拉斯算子&#xff0c;我们可以直接用求解的方式得到融合后的图像。因为人眼对二阶导是更敏感的&#xff0c;所以只要我们指定了融合区域内部的梯度值&#xff0c;并且知道融合边界处的值&#xff0c…

三层神经网络实现手写字母的识别(基于tensorflow)

数据集的制作参考这篇文章&#xff1a; https://blog.csdn.net/fanzonghao/article/details/81229409 一&#xff0c;读取数据集 import tensorflow as tf import numpy as np import pickle import matplotlib.pyplot as plt #对于x变成(samles,pixs),y变成one_hot (sample…