函数副作用会给程序设计带来不必要的麻烦,给程序带来十分难以查找的错误,并且降低程序的可读性。严格的函数式语言要求函数必须无副作用。 函数的副作用相关的几个概念, Pure Function、 Impure Function、 Referential Transparent。 纯函数 ( Pure Function ) 输入输出数据流全是显式(Explicit)的。 显式(Explicit)的意思是,函数与外界交换数据只有一个唯一渠道——参数和返回值。函数从函数外部接受的所有输入信息都通过...
这一语言功能的本质依赖于 JavaScript 特有的原型链(prototype chain)模式。 所以严格意义上说,JavaScript 是基于原型的面向对象语言。也就是说,每个实例对象都具有一个原型。对象从该原型中继承属性和方法。 1、构造函数 利用构造函数,可以简单地创建对象。构造函数内的 this 关键字指向实例对象本身: 代码如下: function People(name){ this.name = name; } 使用 new 运算符和构造函数创建实例对象: 代码如下: var peopl...
event.clientX返回事件发生时,mouse相对于客户窗口的X坐标 event.X也一样 但是如果设置事件对象的定位属性值为relative event.clientX不变 而event.X返回事件对象的相对于本体的坐标 event对象详解 ICOOE 2000.3.31 http://www.51js.com/ event代表事件的状态,例如事件发生的的元素、鼠标的位置等等,event对象只在事件过程中才有效。 event属性: altKey 检索ALT键的当前状态 可能的值 true为关闭 false为不关闭 button 检索按下...
精妙的 tmpl 前端模板类开源的不少,但最属 jQuery 作者 John Resig 开发的 “javascript micro templating” 最为精妙,寥寥几笔便实现了模板引擎核心功能。 它的介绍与使用方式请看作者博客:http://ejohn.org/blog/javascript-micro-templating/ 让我们先看看他的源码: 代码如下: (function(){ var cache = {}; this.tmpl = function (str, data){ var fn = !/\W/.test(str) ? cache[str] = cache[str] || tmpl(document.getE...
js中function对象是一个令人着迷的东西,但由于他太过于灵活,常常令人迷惑,下面我贴一些代码: 大多数人这样简写: 代码如下:function test () {} 《jsvascript语言精粹》整本书这样写: 代码如下:var test = function () {} 函数可以立即运行并赋值: 代码如下: var test = function () {} () // test === undefined var test2 = function () {return 糖饼}() // test2 === 糖饼 但是函数简写方式不能直接运行,下面代码会报...
作者:nuysoft/高云 QQ:47214707 EMail:nuysoft@gmail.com 声明:本文为原创文章,如需转载,请注明来源并保留原文链接。 在分析Sizzle源码之前,先整理一下选择器的工作原理 先明确一些选择器中用到的名词,后边阅读时不会有歧义: 选择器表达式: "div > p" 块表达式: "div" "p" 并列选择器表达式: "div, p" 块分割器: Sizzle中的chunker正则,对选择器表达式从左向右分割出一个个块表达式 查找器: 对块表达式进行查找,...
它的低学习门槛让很多人都称它为学前脚本语言,它另外一个让人嘲笑的东西是动态语言的概念是偏偏使用了高标准的静态数据类型。其实,你和Javascript都站错了立场,而现在,你让Javascript很生气。这里有五个原因能说明你的Javascript技术很烂。 1. 你没有使用命名空间。 是否还记得在大学里老师告诉你不要在家庭作业里使用全局变量?Javascript里的全局变量的使用方法也不例外。Web网页稍不留神就会变的混乱不堪、到处都是从互联网...
5. 异步队列 Deferred 5.1 概述 异步队列是一个链式对象,增强对回调函数的管理和调用,用于处理异步任务。 异步队列有三种状态:初始化(unresolved),成功(resolved),失败(rejected)。 执行哪些回调函数依赖于状态。 状态变为成功(resolved)或失败(rejected)后,将保持不变。 回调函数的绑定可以是同步,也可以是异步的,即可以在任何时候绑定。 (本节中的 绑定 注册 增加 具有相同的含义) 5.2 关键方法 先看看jQuer...
1. 总体架构 1.1 自调用匿名函数 self-invoking anonymous function 打开jQuery源码,首先你会看到这样的代码结构: 代码如下: (function( window, undefined ) { // jquery code })(window); 1. 这是一个自调用匿名函数。什么东东呢?在第一个括号内,创建一个匿名函数;第二个括号,立即执行 2. 为什么要创建这样一个“自调用匿名函数”呢? 通过定义一个匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会...
代码如下: Function.prototype.createInstance = function(){ var T = function(){}; T.prototype = this.prototype; T.constructor = this; var o = new T(); this.apply(o, arguments); return o; } 说下上面代码里面 T.constructor = this这句话,我感觉这句话没有什么实际作用, 本身T.constructor应该是为Funtion,为什么要给它设定为Funtion的实例呢, 代码如下: Function.prototype.$extends = function(p){ this.$super ...
作者:nuysoft/高云 QQ:47214707 EMail:nuysoft@gmail.com 声明:本文为原创文章,如需转载,请注明来源并保留原文链接。 读读写写,不对的地方请告诉我,多多交流共同进步,本章的的PDF等本章写完了发布。 jQuery源码分析系列的目录请查看 http://nuysoft.iteye.com/blog/1177451,想系统的好好写写,目前还是从我感兴趣的部分开始,如果大家有对哪个模块感兴趣的,建议优先分析的,可以告诉我,一起学习。 3.4 其他静态工具函...
作者:nuysoft/高云 QQ:47214707 EMail:nuysoft@gmail.com 毕竟是边读边写,不对的地方请告诉我,多多交流共同进步。本章还未写完,完了会提交PDF。 前记: 想系统的好好写写,但是会先从感兴趣的部分开始。 近期有读者把PDF传到了百度文库上,首先感谢转载和传播,但是据为已有并设置了挺高的财富值才能下载就不好了,以后我整理好了会传到文库上。请体谅一下。 3. 构造jQuery对象 3.1 源码结构 先看看总体结构,再做分解: ...
那么有什么不同呢?先看一个例子: 一个二级级联动态下拉列表框,一级分类(即大类别)id="vSort0". 代码如下: function changelocation(id) {…………} ……省略…… ……………… 现在有个js脚本: 代码如下: changelocation(document.form4.vSort0.options[document.form4.vSort0.selectedIndex].value); //初始化第一个一级分类的二级分类,去掉后第一个一级分类的二级分类在页面载入之后不显示。回选才显示。将一级分类...
1、escape对ansi码0-255以外的字符进行编码输出%u****格式即unicode值,escape 方法返回一个包含了 charstring 内容的字符串值( Unicode 格式)。所有空格、标点、重音符号以及其他非 ASCII 字符都用 %xx 编码代替,其中 xx 等于表示该字符的十六进制数。例如,空格返回的是 "%20" escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z 2、encodeURI类似escape,用于地址栏编码 encodeURI不编码字符有82个:!,#,$,&,'...
如下 代码如下:var a = 3; 实际有两个步骤: 1 初始化a为undefined 2 a赋值3 因此会出现一些“匪夷所思”的现象,即JS中变量可以先使用后声明。这在Java中是不允许的。 代码如下:System.out.println(a); int a = 1; 编译通不过。但JS可以,如下 代码如下:alert(a); var a; 虽然是undefined,但不会报错。说明a的确声明了,且为undefined。 如果只是“alert(a)”,没有“var a”的话JS引擎会报错的。 代码如下:alert(a); FF...