通过JQuery源码学习JS使用技巧——持续更新······(7月31日)

欢迎转载,请注明出处!
https://gii16.github.io/javascript/2016/07/29/learnfromjquery.html

欢迎交流,可去笔者博客园中评论:
http://www.cnblogs.com/Gii16/p/5721020.html

笔者的老板是做文本挖掘研究的,所以研究JS这方面可以算是笔者的一个爱好吧。因为项目压力比较重,可能更新的会比较慢,还请各位看官海涵。

博客中研究的Jquery为3.1.0版本,下载自https://jquery.com/。

1.匿名函数自执行————jquery-3.1.0.js(15行开始)

2."use strict"模式(严格模式)————jquery-3.1.0.js(17行)

严格模式,是JS发展中出现的新模式,出发点是使JS代码更安全减少错误。
部分内容参考了阮一峰的博客,http://www.ruanyifeng.com/blog/2013/01/javascript_strict_mode.html。

声明方法: 1.在<script></script>代码块的产生实际效果的第一行加入字符串“use strict”;
2.在函数产生实际效果的第一行加入字符串字符串“use strict”;
注:产生实际效果这个说法来自阮一峰的博客,笔者进行了一些实验,发现除了在“use strict”前面放空行或其他字符串,比如:“123”、“abc”这种,不会影响进入严格模式,其他代码如:alert(123);、123甚至一个空分号;等都会导致“use strict”失效,因此大家在使用的时候,为防止出错,直接放在第一行就行。

作用域:方法1在整个JS代码块中有效,方法2只在单个函数中有效。
常用做法:方法2使用远多于方法1,原因:假设存在文件A和文件B,文件B在代码块开头使用“use strict”,当A引用B时,两个JS代码块merge后,“use strict”会出现在新的代码块的开头,整个代码块都会是严格模式,这会导致原来A文件中不符合严格模式的代码报错;当B引用A时,两个JS代码块merge后,“use strict”位于新代码块中间,严格模式失效。

而在JQuery和许多其他开源库中,常用的做法是将“use strict”和代码块都放在一个立即执行的匿名函数中,然后通过这个匿名函数把需要的变量、函数都建立起来。这么做的好处是……(未完待续)

时间: 2024-08-08 09:38:17

通过JQuery源码学习JS使用技巧——持续更新······(7月31日)的相关文章

jQuery源码学习笔记:扩展工具函数

// 扩展工具函数 jQuery.extend({ // http://www.w3school.com.cn/jquery/core_noconflict.asp // 释放$的 jQuery 控制权 // 许多 JavaScript 库使用 $ 作为函数或变量名,jQuery 也一样. // 在 jQuery 中,$ 仅仅是 jQuery 的别名,因此即使不使用 $ 也能保证所有功能性. // 假如我们需要使用 jQuery 之外的另一 JavaScript 库,我们可以通过调用 $.noC

jquery源码学习

jQuery 源码学习是对js的能力提升很有帮助的一个方法,废话不说,我们来开始学习啦 我们学习的源码是jquery-2.0.3已经不支持IE6,7,8了,因为可以少学很多hack和兼容的方法. jquery-2.0.3的代码结构如下 首先最外层为一个闭包, 代码执行的最后一句为window.$ = window.jquery = jquery 让闭包中的变量暴露倒全局中. 传参传入window是为了便于压缩 传入undefined是为了undifined被修改,他是window的属性,可以被修

jquery源码学习(二)sizzle部分 【转】

一,sizzle的基本原理 sizzle是jquery选择器引擎模块的名称,早在1.3版本就独立出来,并且被许多其他的js库当做默认的选择器引擎.首先,sizzle最大的特点就是快.那么为什么sizzle当时其他引擎都快了,因为当时其他的引擎都是按照从左到右逐个匹配的方式来进行查找的,而sizzle刚好相反是从右到左找的. 举个简单的例子 “.a .b .c”来说明为什么sizzle比较快.这个例子如果按照从左到右的顺序查找,很明显需要三次遍历过程才能结束,即先在document中查找.a,然后

jQuery源码学习笔记五 六 七 八 转

jQuery源码学习笔记五 六 七 八 转 Js代码   <p>在正式深入jQuery的核心功能选择器之前,还有一些方法,基本都是数组方法,用于遴选更具体的需求,如获得某个元素的所有祖选元素啦,等等.接着是其缓存机制data.</p> <pre class="brush:javascript;gutter:false;toolbar:false"> //@author  司徒正美|なさみ|cheng http://www.cnblogs.com/ru

jQuery 源码学习 - 01 - 简洁的 $(&#39;...&#39;)

首先贴上学习参考资料:[深入浅出jQuery]源码浅析--整体架构,备用地址:chokcoco/jQuery-. jQuery 库,js 开发的一个里程碑,它的出现,让网页开发者们告别荒蛮的上古时代,初步解放生产力,正式进入黄铜时代. 虽然如今 Angular/React/Vue 三驾马车驰骋畋猎,jQuery的时代渐行渐远,但是它的思想它的设计都有着里程碑式的作用.当然,我是拿它来补基础的,逃... 1.自执行函数 (function(params) { // ... })(Variable)

菜鸟的jQuery源码学习笔记(二)

jQuery对象是使用构造函数和原型模式相结合的方式创建的.现在来看看jQuery的原型对象jQuery.prototype: 1 jQuery.fn = jQuery.prototype = { 2 //成员变量和方法 3 } 这里给原型对象起了一个别名叫做jQuery.fn.要注意的是这个jQuery.fn可不是jQuery对象的属性,而是jQuery构造方法本身的属性,它是不会传给它所创建的对象的.如果你在控制台敲$().fn的话输出的结果会是undefined.接下来看看原型对象里面有些

jquery源码学习(一)core部分

这一部分是jquery的核心 jquery的构造器 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 jQu

jquery源码学习-构造函数(2)

最近几天一直在研究jquery源码,由于水平太低看得昏头转向.本来理解的也不是很深刻,下面就用自己的想法来说下jquery是如何定义构造函数初始化的.如果有什么不对的地方,希望个位高手指出.  一般写构造函数如下 function Aaa(){} Aaa.prototype.init = function(){}; Aaa.prototype.css = function(){}; var a1 = new Aaa(); a1.init(); //初始化 a1.css(); jQuery写法如下

jquery源码学习-初始(1)

最近几天一直在研究jquery源码,由于水平太低看得昏头转向.本来理解的也不是很深刻,下面就用自己的想法来说下jquery是如何定义构造函数初始化的.如果有什么不对的地方,希望个位高手指出. 首先要了解下什么时候自执行匿名函数 ,它的用途就是 相当于创建一个命名空间,只要把自己所有的代码写在这个特殊的函数包装内,外部不能访问,除非你允许. 基本格式 (function(){ //代码 })(); (function(){ var a = 10; function $(){ alert(a); }