Jquery源码学习(第一天)
jQuery是面向对象的设计
通过window.$ = window.jQuery = $; 向外提供接口,将$挂在window下,外部就可以使用$和jQuery
$("#div1").css() //$("#div1")是jQuery的一个实例对象,css()是实例的方法【实例的方法只能jQuery对象使用】
$("#div1").html()
$.trim()
$.proxy() //工具方法,相当于静态方法,【jQuery对象和原生js对象都可以使用】
(function(window , undefined){
【1】jQuery源码采取闭包形式(匿名函数自执行),好处是里面的代码都是局部的,不会与外部冲突
【2】为什么要传入window?
1、根据函数作用域链,若没有传入window,就会一层一层向上查找window,而window对象是 最顶层的对象,查找速度就会非常慢,传入后,只需要查找参数即可
2、便于压缩,可以用w参数代表window对象,所有用到window的都是w,节约空间
【3】为什么传入undefined?
在某些浏览器版本中undefined可以被修改
var undefined = 10;
alert(undefined); //IE10弹出undefined,IE7 8弹出10
为防止undefined被修改,这里传入undefined,jQuery首先找到的是参数中传入的undefined,不会找到外层或被修改的undefined
【4】 <script>
"use strict" //严格模式不允许 a = 10 ; var num = 010 不规范的写法 一般不推荐使用严格模式
</script>
【5】jQuery(document)可以直接使用,但是jQuery将每一个对象都赋值给了一个变量
var rootJQuery = jQuery(document)这样做的原因: jQuery(document)不可被压缩成一个字符,而rootJQuery可以
【6】 判断是不是undefined: window.a == undefined; typeof window.a == 'undefined' 用这个兼容IE6 7 8 9
})(window);
基本的面向对象的编程
function Aaa(){ //会自动生成Aaa.prototype.constructor = Aaa
}
Aaa.prototype.init = function(){};
Aaa.prototype.css = function(){};
var a1 = new Aaa();
a1.init();
a1.css();
两种为原型添加属性的方式比较:
一:
Aaa.prototype.name = 'zz';
Aaa.prototype.age = '18'
alert( a1.constructor ); //function Aaa(){}
二:
//prototype被覆盖,其中的constructor : Aaa不再了,所以{}形式需要在里面加上constructor : Aaa,否则constructor是空的Object
Aaa.prototype = {name : 'zz',age : '18'};
alert( a1.constructor ); //Object(){}
jQuery的设计思想:可以实现$().css()方式编程的原理
function jQuery(){
return new jQuery.prototype.init();
}
jQuery.prototype.init = function(){};
jQuery.prototype.css = function(){};
jQuery.prototype.init.prototype = jQuery.prototype; //对象的引用关系,对象的原型是一个对象
Jquery源码学习(第一天)的更多相关文章
- jquery源码学习第一天
第一天认识了jquery的大体结构,总的大范围是 (function() { // 这里是封装的代码,包括了各种方法.工具 window.JQuery = JQuery window.$ = $; } ...
- jquery源码学习笔记三:jQuery工厂剖析
jquery源码学习笔记二:jQuery工厂 jquery源码学习笔记一:总体结构 上两篇说过,query的核心是一个jQuery工厂.其代码如下 function( window, noGlobal ...
- jquery源码学习(一)——jquery结构概述以及如何合适的暴露全局变量
jQuery 源码学习是对js的能力提升很有帮助的一个方法,废话不说,我们来开始学习啦 我们学习的源码是jquery-2.0.3已经不支持IE6,7,8了,因为可以少学很多hack和兼容的方法. jq ...
- jquery 源码学习(一)
从上边的注释看,jQuery的源码结构相当清晰.条理,不像代码那般晦涩和让人纠结 1. 总体架构 1.1 自调用匿名函数 self-invoking anonymous function 打开jQ ...
- jQuery源码学习笔记一
学习jQuery源码,我主要是通过妙味视频上学习的.这里将所有的源码分析,还有一些自己弄懂过程中的方法及示例整理出来,供大家参考. 我用的jquery v2.0.3版本. var rootjQuery ...
- jquery 源码学习(四)构造jQuery对象-工具函数
jQuery源码分析-03构造jQuery对象-工具函数,需要的朋友可以参考下. 作者:nuysoft/高云 QQ:47214707 EMail:nuysoft@gmail.com 声明:本文为原 ...
- jQuery源码学习感想
还记得去年(2015)九月份的时候,作为一个大四的学生去参加美团霸面,结果被美团技术总监教育了一番,那次问了我很多jQuery源码的知识点,以前虽然喜欢研究框架,但水平还不足够来研究jQuery源码, ...
- 读艾伦的jQuery的无new构建,疑惑分析——jquery源码学习一
背景: 有心学习jquery源码,苦于自己水平有限,若自己研究,耗时耗力,且读懂之日无期. 所以,网上寻找高手的源码分析.再经过自己思考,整理,验证.以求有所收获. 此篇为读高手艾伦<jQuer ...
- jquery 源码学习(*)
最近在做日志统计程序,发现对方的程序是在Jquery基础上进行开发的,而公司的网站的框架是prototype.而且我也早就想了解一下Jquery源码,故决定研究Jquery源码,模拟它的方法 Jq ...
随机推荐
- $\mathscr{F}$类
$\mathscr{F}$类:在单位元盘$B(0,1)$中满足$$f(0)=0,f'(0)=1$$ 的双全纯函数的全体.
- H5(三)
Canvas(画布) 基本内容 简单来说,HTML5提供的新元素<canvas> Canvas在HTML页面提供画布的功能 在画布中绘制各种图形 C ...
- Delphi的Trim函数
三个Trim函数简介 函数原型 function Trim(const S: string): string; 将字符串前后的空白及控制字元清掉. 注意Trim函数只能清掉字符串前后的空格及控制字元, ...
- Delphi容器类之---TOrderedList、TStack、TQueue、TObjectStack、TObjectQueue
TOrderedList.TStack.TQueue Contnrs单元还定义了其他三个类:TOrderedList.TStack.TQueue TOrderedList TOrderedList = ...
- 【Java并发系列02】Object的wait()、notify()、notifyAll()方法使用
一.前言 对于并发编程而言,除了Thread以外,对Object对象的wati和notify对象也应该深入了解其用法,虽然知识点不多. 二.线程安全基本知识 首先应该记住以下基本点,先背下来也无妨: ...
- Project Euler欧拉计划
1 If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. Th ...
- Puppet自动化部署-安装及配置(3)
本文介绍Puppet Master及Agent相关的安装及配置. 一. 官网下载Puppet安装YUM源 [root@puppet-master ~]# rpm -ivh https://yum.pu ...
- Ubuntu14.04 64位机上安装cuda8.0 cudnn5.0操作步骤 - 网络资源是无限的
查看Ubuntu14.04 64位上显卡信息,执行: lspci | grep -i vga lspci -v -s 01:00.0 nvidia-smi 第一条此命令可以显示一些显卡的相关信息:如果 ...
- http错误代码含义中英文对照
Http错误代码含义中文 概要当用户试图通过 HTTP 或文件传输协议 (FTP) 访问一台正在运行 Internet 信息服务 (IIS) 的服务器上的内容时,IIS 返回一个表示该请求的状态的数字 ...
- [资料分享]尚硅谷JavaWeb
下载链接: 链接:https://pan.baidu.com/s/1pKMclsv 密码:8fbh