01 2012 档案

摘要:Hash是Prototype作者扩展出来的一个数据类型。本质上他就是一个普通的javascript对象(注:不要纠结什么javascript变量都是对象,这里说new Object()那种),然后在这个对象上面扩展出来一些其他的方法。基本原理基本的原理的代码说明就是: function Hash(object){ this._object = object; } Hash.prototype = { constructor : Hash, method_1 : function(){//this._object}, me... 阅读全文
posted @ 2012-01-31 13:27 西山 阅读(2349) 评论(0) 推荐(1)
摘要:现在来看Enumerable剩下的方法toArray | size | inspectinject | invoke | sortBy | eachSlice | inGroupsOf | plunk | zip前面说过map的原理,不管原来的集合是什么,调用map之后返回的结果就是一个数组,其中数组的每一项都是经过interator处理了的,如果不提供interator那么默认使用Prototype.K,此时的作用很明显,返回的结果就是原来集合的数组形式。原来的集合中length属性为多少,返回结果数组的length就是多少。这个特殊情况被作为一个方法独立出来,叫做toArray: fun. 阅读全文
posted @ 2012-01-19 09:58 西山 阅读(533) 评论(0) 推荐(0)
摘要:剩下的方法太多,于是分作两部分。亮点就是$break和$continue,以及grep方法的思想。 前面each方法中掉了一个方面没有说,就是源码中的$break和$continue。这两个变量是预定义的,其作用相当于普通循环里面的break和continue语句的作用。出于效率的考虑,在某些操作中并不需要完全遍历一个集合(不局限于一个数组),所以break和continue还是很必要的。对于一个循环来说,对比下面几种退出循环的方式: var array_1 = [1,2,3]; var array_2 = ['a','b','c']; (fun 阅读全文
posted @ 2012-01-17 15:09 西山 阅读(478) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2012-01-17 00:02 西山 阅读(482) 评论(10) 推荐(1)
摘要:在javascript中,根本找不到Enumerable的影子,因为这一块是Prototype作者从Ruby中借鉴过来的。并且Enumerable在实际中根本没有直接应用的机会,都是混入到其他的对象中,可以说是其他对象的一个“父类”(不过只是调用了Object的extend方法,进行了方法的直接拷贝而已)。 我并不熟悉Ruby,不过看Enumerable中的一些方法,倒是跟Python中的有几分相似。 Enumerable其中一个最重要的方法是each,each这个方法应该都比较熟悉,其作用便是遍历一个序列的所有元素,并进行相应的处理。不过多数是应用在数组上,比如原生数组的forEac... 阅读全文
posted @ 2012-01-16 00:56 西山 阅读(963) 评论(1) 推荐(0)
摘要:Prototype在原生对象的基础上扩展,分别是Object,Function,String,Number,Array,Date,前面分析了Object,Function,String,还剩下Number,Array,Date。Number部分方法比较少,一共有8个: toColorPart: 将 Number 对象转换为具有两位数字的十六进制形式 succ: 返回当前 Number 对象的下一个值,即当前值加一 times: 采用 Ruby 的风格来封装一个标准的 [0...n] 循环 toPaddedString:将当前 Number 对象转换为... 阅读全文
posted @ 2012-01-14 21:11 西山 阅读(1163) 评论(0) 推荐(0)
摘要:今天在群里讨论alert的问题,说到了alert的改造,虽然说改造原生方法不是好做法,但是既然提到了就可以讨论下,所以我按照他们的讨论给出了下面的一段代码: var _alert = window.alert; window.alert = function(param,isDebug){ if(isDebug){ console.log(param); }else{ _alert(param); } } alert('x'); alert('x',true); alert... 阅读全文
posted @ 2012-01-13 20:56 西山 阅读(848) 评论(1) 推荐(1)
摘要:替换interpolate|sub|scan|truncate | gsubinterpolate :将字符串看作一个模板,并使用 object 的属性填充它。sub :将字符串中前指定个个与 pattern 指定的模式匹配的子串用 replacement 替换scan :遍历字符串中与参数 pattern 指定的模式匹配的所有子串。返回原始字符串本身。truncate :将字符串截短为指定的长度(包含后缀部分), 并添加一个后缀。gsub :将字符串中所有与 pattern 指定的模式匹配的值全部用 replacement 替换掉上面的方法中,最重要的一个方法是gsub,具体说明参见《浅析P 阅读全文
posted @ 2012-01-12 13:11 西山 阅读(573) 评论(0) 推荐(1)
摘要:HTML处理stripTags|escapeHTML|unescapeHTMLJSON处理unfilterJSON|isJSON|evalJSON|parseJSON脚本处理stripScripts|extractScripts|evalScripts 现在,String部分转入具体的关联应用,分别对应HTML字符串,JSON字符串和HTML中的脚本字符串。【乱入一句,有关JSON的一点东西,可以看看http://www.cnblogs.com/TomXu/archive/2012/01/11/2311956.html】下面分别叙述:一、HTML字符串stripTags :移除字符串中所有的 阅读全文
posted @ 2012-01-12 10:25 西山 阅读(891) 评论(0) 推荐(0)
摘要:这两种主要是对《Prototype浅析》先前略过的Sring部分中toQueryParams和Object部分的toQueryString方法的补充一、从URL中提取参数有下列字符串:var linkURL = 'http://localhost:8080/String/string_6.html?昵称=小西山子&age=24#id1';对于一个真实的URL地址,可以用js来读取location中的相关信息来获得某些信息,下面列举一些:location.origin : http://localhost【域】location.pathname : /project_js 阅读全文
posted @ 2012-01-12 01:20 西山 阅读(6673) 评论(0) 推荐(1)
摘要:本文接着上面的String部分,继续下面表格的部分格式camelize | capitalize|underscore|dasherize|inspect 变形toArray|succ|times 这里面一个有用的方法是inspect,按照参考手册的说明,他的作用是“返回该字符串针对调试的字符串表现形式(即用单引号或双引号包括起来,并使用 '\' 对特殊字符进行转义)”,在Object的toJSON里面也涉及到这个方法。 既然涉及到需要转义的字符,我们自然要一份转义字符信息,下面直接给出: String.specialChar = { '\b': '\\ 阅读全文
posted @ 2012-01-11 10:10 西山 阅读(473) 评论(0) 推荐(0)
摘要:赶紧升级你们的浏览器吧·1、firefoxhttp://firefox.com.cn/2、chromehttp://www.google.com/chrome/index.html?hl=zh_cn&brand=CHMA&utm_campaign=zh_cn&utm_source=zh_cn-ha-apac-zh_cn-bk&utm_medium=ha3、opera(什么时候弄的一个“欧朋”这么丑的名字··) http://www.operachina.com/4、ie9 http://windows.microsoft.com/i 阅读全文
posted @ 2012-01-11 02:04 西山 阅读(394) 评论(1) 推荐(0)
摘要:添加到String.prototype中的方法比较多,不过归结起来,大致分为下面几类:分类方法名原始能力增强 strip| include |startsWith |endsWith| empty| blank格式camelize | capitalize| underscore| dasherize |inspect 变形toArray| succ |times替换interpolate |sub| scan| truncate | gsubHTML处理stripTags |escapeHTML| unescapeHTML参数序列化toQueryParamsJSON处理u... 阅读全文
posted @ 2012-01-10 12:50 西山 阅读(1123) 评论(0) 推荐(0)
摘要:JSON介绍http://json.org/这个解析JSON,也是Prototype源码浅析的一个铺垫。下面是一个开篇例子,其中response是从服务器获得的JSON字符串: var response_1 = "{\"user\":\"xesam\",\"info\":{\"age\":\"24\"}}"; var response_2 = "{'user' : 'xesam'}"; var response_3 = &q 阅读全文
posted @ 2012-01-09 23:41 西山 阅读(6481) 评论(0) 推荐(0)
摘要:PS:检测浏览器虽然不是一个什么好的做法,但是有时候还是很必要的。见得最多的就是检测navigator.userAgent(这个可以面向所有浏览器,略过)。另外一种就是IE的条件注释,这篇有个比较详细的说明http://www.cnblogs.com/JustinYoung/archive/2009/03/02/ie-jiaojianzhushi.html,注意看它下面的回复<!--[if !IE]><!--><script type="text/javascript"> alert('非IE')</ script& 阅读全文
posted @ 2012-01-01 15:21 西山 阅读(1339) 评论(0) 推荐(0)