从基础的层面来讲,理解JavaScript的定时器是如何工作的是非常重要的。定时器的执行常常和我们的直观想象不同,那是因为JavaScript引擎是单线程的。我们先来认识一下下面三个函数是如何控制计时器的。 脚本之家推荐阅读:雕虫无小技 JavaScript初学者的10个迷你技巧 代码如下: var id = setTimeout(fn, delay); 初始化一个计时器,然后在指定的时间间隔后执行。该函数返回一个唯一的标志ID(Number类型),我们可以使用它来取消计...
每次申明一个jQuery对象的时候,返回的是jQuery.prototype.init 对象,很多人就会不明白,init明明是jQuery.fn的方法啊,实际上这里不是方法,而是init的构造函数,因为js的prototype对象可 以实现继承,加上js的对象只是引用不会是拷贝,new jQuery,new jQuery.fn和new jQuery.fn.init的子对象是一样的,只是有没有执行到init的不同,这里就不讲原因了,等下一篇再讲为什么会是这样。 当我们使用选择器的时候$(selector,content),...
作者:nuysoft/高云 QQ:47214707 EMail:nuysoft@gmail.com 声明:本文为原创文章,如需转载,请注明来源并保留原文链接。 在分析Sizzle源码之前,先整理一下选择器的工作原理 先明确一些选择器中用到的名词,后边阅读时不会有歧义: 选择器表达式: "div > p" 块表达式: "div" "p" 并列选择器表达式: "div, p" 块分割器: Sizzle中的chunker正则,对选择器表达式从左向右分割出一个个块表达式 查找器: 对块表达式进行查找,...
谷歌在2003到2006年间连续发表了三篇非常有影响力的文章,分别是2003年在SOSP上发布的GFS,2004年在OSDI上发布的MapReduce,以及2006年在OSDI上发布的BigTable。GFS是文件系统相关的,其对后来的分布式文件系统设计具有指导意义;MapReduce是一种并行计算的编程模型,用于作业调度;BigTable是一个用于管理结构化数据的分布式存储系统,构建在GFS、Chubby、SSTable等Google技术之上。相当多的Google应用使用了这三种技术,比如Goog...
this的工作原理 如果一个函数被作为一个对象的方法调用,那么this将被指派为这个对象。 代码如下:var parent = { method: function () { console.log(this); }};parent.method();// <- parent 注意这种行为非常“脆弱”,如果你获取一个方法的引用并且调用,那么this的值不会是parent了,而是window全局对象。这让大多数开发者迷惑。 代码如下:ThisClownCar();// <- Window 改动this .call、 .apply 和.bind 方法用来...
要根据this 所在的位置来理解它,情况大概可以分为3种:1、在函数中:this 通常是一个隐含的参数。2、在函数外(顶级作用域中):在浏览器中this 指的是全局对象;在Node.js中指的是模块(module)的导出(exports)。3、传递到eval()中的字符串:如果eval()是被直接调用的,this 指的是当前对象;如果eval()是被间接调用的,this 就是指全局对象。对这几个分类,我们做了相应的测试: 1、在函数中的this函数基本可以代表JS中所有可...
几乎所有的Node.js开发人员可以告诉你`require()`函数做什么,但我们又有多少人真正知道它是如何工作的?我们每天都使用它来加载库和模块,但它的行为,对于我们来说反而是一个谜。 出于好奇,我钻研了node的核心代码来找出在引擎下发生了什么事。但这并不是一个单一的功能,我在node的模块系统的找到了module.js。该文件包含一个令人惊讶的强大的且相对陌生的核心模块,控制每个文件的加载,编译和缓存。`require()`,它的横空出...
本文深入分析jQuery的ready函数是如何工作的。分享给大家供大家参考,具体如下: jQuery 是一个伟大的脚本库,由 John Resig 在 2006年1月的BarCamp NYC上释出第一个版本。你可以在 http://jquery.com/ 下载到最新版本,截止本文发布为止已更新到jQuery 2.1.4版。这里以jQuery1.8.3为例分析。 学习 jQuery 有许多途径,我们今天从 jQuery 的 ready 函数开始。本例中的代码都来自于 jQuery 脚本库。 如果你使用过 jQuery , 就必然使...
一、问题的由来 学懂 JavaScript 语言,一个标志就是理解下面两种写法,可能有不一样的结果。 var obj = {foo: function () {} }; var foo = obj.foo; // 写法一 obj.foo() // 写法二 foo()上面代码中,虽然obj.foo和foo指向同一个函数,但是执行结果可能不一样。请看下面的例子。 var obj = {foo: function () { console.log(this.bar) },bar: 1 }; var foo = obj.foo; var bar = 2; obj.foo() // 1 foo() // 2这种差异的原因,就...
浏览器在读取HTML文件的时候,只有当遇到<script>标签的时候,才会唤醒所谓的“JavaScript解析器”开始工作。 JavaScript解析器工作步骤: 1、“找一些东西”: var、 function、 参数;(也被称之为预解析) 备注:如果遇到重名分为以下两种情况: 遇到变量和函数重名了,只留下函数遇到函数重名了,根据代码的上下文顺序,留下最后一个2、逐行解读代码。 备注:表达式可以修改预解析的值 JS解析器在执行第一步预解析的时候,会从代码...
setTimeout() MDN对 setTimeout 的定义为: 在指定的延迟时间之后调用一个函数或执行一个代码片段。 语法 setTimeout 的语法非常简单,第一个参数为回调函数,第二个参数为延时的时间。函数返回一个数值类型的ID唯一标示符,此ID可以用作 clearTimeout 的参数来取消定时器: var timeoutID = window.setTimeout(code, delay);IE0+ 还支持回调参数的传入: var timeoutID = window.setTimeout(func, delay, [param1, param2, ...]);...
先为大家分享JS原型继承实例,供大家参考,具体内容如下 一、JS原型继承 <!DOCTYPE html> <html><head><meta charset="UTF-8"><title>JS原型继承</title> </head><body><!--原型继承--><script type="text/javascript">//clone()函数用来创建新的类Person对象var clone = function(obj) {var _f = function() {};//这句是原型式继承最核心的地方,函数的原型对象为对象字面量_f.prototype = obj;return new _f;}//先声明一个对象字...
本文深入分析jQuery的ready函数是如何工作的。分享给大家供大家参考,具体如下: jQuery 是一个伟大的脚本库,由 John Resig 在 2006年1月的BarCamp NYC上释出第一个版本。你可以在 http://jquery.com/ 下载到最新版本,截止本文发布为止已更新到jQuery 2.1.4版。这里以jQuery1.8.3为例分析。 学习 jQuery 有许多途径,我们今天从 jQuery 的 ready 函数开始。本例中的代码都来自于 jQuery 脚本库。 如果你使用过 jQuery , 就必然使...
几乎所有的Node.js开发人员可以告诉你`require()`函数做什么,但我们又有多少人真正知道它是如何工作的?我们每天都使用它来加载库和模块,但它的行为,对于我们来说反而是一个谜。 出于好奇,我钻研了node的核心代码来找出在引擎下发生了什么事。但这并不是一个单一的功能,我在node的模块系统的找到了module.js。该文件包含一个令人惊讶的强大的且相对陌生的核心模块,控制每个文件的加载,编译和缓存。`require()`,它的横空出...
要根据this 所在的位置来理解它,情况大概可以分为3种:1、在函数中:this 通常是一个隐含的参数。2、在函数外(顶级作用域中):在浏览器中this 指的是全局对象;在Node.js中指的是模块(module)的导出(exports)。3、传递到eval()中的字符串:如果eval()是被直接调用的,this 指的是当前对象;如果eval()是被间接调用的,this 就是指全局对象。对这几个分类,我们做了相应的测试: 1、在函数中的this函数基本可以代表JS中所有可...