Fork me on GitHub
  2011年10月30日
摘要: js 变量是松散类型的本质,决定了它只是在特定时间内用于保存特定值的一个名称而已。基本类型 栈内存中的简单数据段 5种 underfined Null Boolean NumberString.固定大小 提高速度 阅读全文
posted @ 2011-10-30 15:19 【艾伦】 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 如图。。常见的的模拟http://www.hellokaidi.com 阅读全文
posted @ 2011-10-30 14:00 【艾伦】 阅读(458) 评论(0) 推荐(0) 编辑
  2011年10月29日
摘要: g 代表全局匹配m 代表可以进行多行匹配i 代表不区分大小写匹配^ 匹配输入字符串的开始位置$ 匹配输入字符串的结束位置* 匹配前面的子表达式零次或多次. 等价于{0,}+ 匹配前面的子表达式一次或多次. 等价于{1,}? 匹配前面的子表达式零次或一次. 等价于[0,1} , 当该字符跟在任何一个其他限制符(*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o", 阅读全文
posted @ 2011-10-29 09:51 【艾伦】 阅读(2226) 评论(0) 推荐(3) 编辑
摘要: 除了模拟类的私有变量和私有方法。闭包还可用来模拟类的静态变量和方法。除了再次利用js的闭包特性,还需要借助js语法上的一些特点。执行上述代码后,浏览器控制台将会输出如下字符串:Created 1 tree items!Created 2 tree items!之所以把上述一些js变量和函数称为“静态”,是借用了Java的提法。这些“静态”变量和方法被保存在闭包中,在内存中是唯一的,不会随着该函数副本的增加而增加。如果一个函数需要被实例化多次,但其中的一些内部函数并不需要访问任何实例数据,从节省内存的角度考虑,可采用上述构建静态函数的方法。js中的“静态”概念,有一点与Java不同:如果上述Tr 阅读全文
posted @ 2011-10-29 09:44 【艾伦】 阅读(1413) 评论(0) 推荐(0) 编辑
  2011年10月28日
摘要: //高级程序匿名函数章function a(arg){};var a = function(){};var a = new Function("arg","return n1+n2");/* 函数就是对象 JS中三种声明函数的方式 区别:js中 函数名只是一个函数对象的指针,通俗点讲就是 一个书的目录 知道具体的内容的位置根据js预解析 声明函数会提前加到作用域中,然匿名函数姑且看过变量根据变量的方式所以声明函数能在全局任何地方调用,匿名函数需要先定义*/待续 阅读全文
posted @ 2011-10-28 22:38 【艾伦】 阅读(449) 评论(0) 推荐(0) 编辑
摘要: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf- 阅读全文
posted @ 2011-10-28 22:22 【艾伦】 阅读(3736) 评论(0) 推荐(0) 编辑
摘要: function outerFunc(){ var privateAttr = 10; return function(){ privateAttr *= 2; return privateAttr; };}// 通过调用outerFunc函数,返回一个指向innerFunc函数的引用,// 这个引用被赋给变量refInnerFuncvar refInnerFunc = outerFunc();alert(refInnerFunc());// 通过 refInnerFunc 这个引用调用到 innerFunc 函数refInnerFunc(); // return 20 变量private.. 阅读全文
posted @ 2011-10-28 22:16 【艾伦】 阅读(1174) 评论(0) 推荐(0) 编辑
摘要: 在Javascript的框架开发中,面向对象式编程和面向函数式编程各有长处,因况而异。除了在单例工厂中设置一些类型常量外,闭包通常被用来模拟类的私有变量和方法。结合js的prototype机制,一个具有面向对象特点的js函数能够被以减少内存占用的形式实例化出来。每创建一个新的Tree实例,内存会为其私有变量,私有方法和所有能够访问私有变量和私有方法的方法开辟物理空间,而prototype中的方法始却始终只有一个。因此我们可以将那些不需要保存自身状态信息的方法放到js函数式对象的prototype中去,以节省浏览器的内存开销。 阅读全文
posted @ 2011-10-28 22:01 【艾伦】 阅读(625) 评论(0) 推荐(1) 编辑
  2011年9月6日
摘要: prototype与[[prototype]]在有面象对象基础的前提下,来看一段代码:01//Animal构造函数02functionAnimal(name){03this.name = name;04}05//Animal原型对象06Animal.prototype = {07id:"Animal",08sleep:function(){09alert("sleep");10}11}1213vardog =newAnimal("旺才");14alert(dog.name);//旺才15alert(dog.id);//Animal16 阅读全文
posted @ 2011-09-06 08:57 【艾伦】 阅读(773) 评论(1) 推荐(2) 编辑
  2011年9月5日
摘要: <scriptlanguage="JavaScript">/**演示arguments的用法,如何获取实参数和形数数*/functionargTest(a,b,c,d){varnumargs=arguments.length;//获取被传递参数的数值。varexpargs=argTest.length;//获取期望参数的数值。alert("实参数目为:"+numargs)alert("形数数目为:"+expargs)alert(arguments[0])alert(argTest[0])//undefined没有这种用法} 阅读全文
posted @ 2011-09-05 17:15 【艾伦】 阅读(362) 评论(0) 推荐(1) 编辑
摘要: 拉姆达(lambda)函数/*ECMA-262 对象定义:无序属性的集合,散列表构造函数始终要已一个大写字母开头,非构造小写开头*/var p = new Object();p.name = "cj";p.say = function(){this.name};//缺点:使用同一个接口创建很对象,大量的垃圾重复代码//工厂模式 问题 没有解决对象识别(怎么知道一个对象的类型)function createP(name,age){ var o = new Object(); o.name =name; o.age = age; o.say =function(){this.n 阅读全文
posted @ 2011-09-05 17:08 【艾伦】 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 基本的数据类型原始类型(简单数据类型、基本数据类型)Undefined类型:表示声明了变量但未对其初始化时赋予该变量的值。undefined为Undefined类型下的唯一的一个值。Null类型:用于表示尚未存在的对象。Null类型下也只有一个专用值null。Boolean类型:有两个值true和false,主要用于条件判断,控制执行流程。Number类型:代表数字(即包括32的整数,也包括64位的浮点数)String类型:用于代表字符串。注:关于undefined与null的关系,可以参见《理解Javascript_02_理解undefined和null》一文。对象:一个无序属性的集合,这些 阅读全文
posted @ 2011-09-05 15:34 【艾伦】 阅读(1110) 评论(0) 推荐(0) 编辑
摘要: 基本的数据类型原始类型(简单数据类型、基本数据类型)Undefined类型:表示声明了变量但未对其初始化时赋予该变量的值。undefined为Undefined类型下的唯一的一个值。Null类型:用于表示尚未存在的对象。Null类型下也只有一个专用值null。Boolean类型:有两个值true和false,主要用于条件判断,控制执行流程。Number类型:代表数字(即包括32的整数,也包括64位的浮点数)String类型:用于代表字符串。注:关于undefined与null的关系,可以参见《理解Javascript_02_理解undefined和null》一文。对象:一个无序属性的集合,这些 阅读全文
posted @ 2011-09-05 15:33 【艾伦】 阅读(364) 评论(0) 推荐(1) 编辑
摘要: 说明:为了文章的系统性,将本博文原来的两节内容放到了单独的一篇中,请见:《理解Javascript_12_执行模型浅析》引用变量优化即然我们已经了解了Javascript中变量的访问规则,那我们就来具体分析一下上面代码中alert(document.body.tagName);这一句的具体执行流程:由此可见,要在Fn2中访问window对象下的document对象的body属性的tagName属性是一个比较漫长的过程(这个问题在IE浏览器中尤为严重)。那么如何优化呢,通过流程图,我们也能发现问题的原因在于引用的级数太多,在《理解Javascript_01_理解内存分配》一文中也说过,通过引用寻 阅读全文
posted @ 2011-09-05 15:11 【艾伦】 阅读(382) 评论(1) 推荐(0) 编辑
摘要: 大家有没有想过,一段javascript脚本从载入浏览器到显示执行都经过了哪些流程,其执行次序又是如何。本篇博文将引出'javascript执行模型'的概念,并带领大家理解javascript在执行时的处理机制。简单的开始简单的代码:01<scripttype="text/javascript"src="xxx.js"></script>02<scripttype="text/javascript">03var i = 10;04function say(msg){05alert(m 阅读全文
posted @ 2011-09-05 15:10 【艾伦】 阅读(350) 评论(0) 推荐(2) 编辑