Ruby's Louvre

每天学习一点点算法

导航

上一页 1 ··· 76 77 78 79 80 81 82 83 84 ··· 125 下一页

2011年4月19日 #

mass Framework oop模块 v3

摘要: 着手开发更新的版本,把旧的版本放出来作记念。"use strict";(function(global,DOC){ var dom = global[DOC.URL.split("#")[0]]; dom.define("oop", ["lang"],function(){ //========================================= // 核心模块 第一类工厂 //========================================== var PROTO = "p 阅读全文

posted @ 2011-04-19 09:42 司徒正美 阅读(1230) 评论(0) 推荐(0) 编辑

2011年4月16日 #

一个简单的行拖动效果

摘要: 行拖动的实现思路非常简单,选中一行,往上拖就与上面的行交换位置,往下拖就与下面的行交换位置。问题是如何得到交换行。我见过一个非常详细的教程,它会把表格里的每一行的高度与Y坐标计算出来,换言之,都时是比较e.pageX是否在[rowTop,rowBottom]区间之内。但这也带来第二个问题,有多少行就有多个这样的区间。于是解法就变成取事件源对象,然后再往上取其父对象,如果其父对象是TR元素,就取其[rowTop,rowBottom]区间....思路非常直接,同时也客观做出一个限制——不能使用代理拖动。先不谈是拖动代理还是拖动实物,光是在移动鼠标的过程要做的计算量就非常大,幸好还在IE的承受范围之 阅读全文

posted @ 2011-04-16 15:58 司徒正美 阅读(5916) 评论(8) 推荐(9) 编辑

2011年4月15日 #

高效将字符串转换为文档碎片

摘要: 我在《javascript 动态插入技术》中,就介绍了用innerHTML转换为文档碎片的技术了,这个被各大类库所取用。但事实上,如果我们的字符串没有th,tbody,col等需要通过包装才能动态生成的标签,也没有那个特烦人的script标签,我们在提高性能上还是有许多方法,如insertAdjacentHTML。但想使用insertAdjacentHTML,限制非常多的,如在IE下避开innerHTML为只读的元素,FF需要很高的版本才支持,加之调用对象(如jQuery)的元素往往只能是节点,不能是字符串,因此很多情况下,我们还是先需要把它转换为节点集合,而今天我介绍的是使用createCo 阅读全文

posted @ 2011-04-15 11:15 司徒正美 阅读(4172) 评论(4) 推荐(3) 编辑

2011年4月12日 #

我的模块加载系统 v5

摘要: 本版本更换更好的状态查询机制与列队机制,去除定时器检测,性能更优,体积更小,功能更强。下面是广告时间:无阻塞加载,使用的是script标签注入方式(还有HTML5的async属性,虽然不知其到底发挥多少威力),并在脚本加载成功后自动移除这些临时生成的标签。按需加载,每一个模块都放进一个与它同名的JS文件中,没有必要为使用某个API而载入整个框架。每个模块自行处理依赖关系,用户不用操心调用了这个模块还要调用哪几个相关模块,核心模块也不用为这些配置而膨胀(如YUI2,dojo)。并行加载,简单解释为加载是无序的,解释执行时(模块本身是个curry函数)由依赖关系强制排队。效果图://http:// 阅读全文

posted @ 2011-04-12 09:10 司徒正美 阅读(3960) 评论(7) 推荐(1) 编辑

2011年4月11日 #

通过两个数字构建一个连续的数组

摘要: Number.prototype.n = function () { for(var i = +this, a = []; i 阅读全文

posted @ 2011-04-11 09:42 司徒正美 阅读(1287) 评论(8) 推荐(0) 编辑

2011年4月10日 #

给文字加上着重号

摘要: var s = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890'; function f(s, width){ return s.replace( new RegExp('[\\s\\S]{1,'+(width || 4)+'}', 'g'), function(m){ return '^' + new Array(m.length).join(' '); }); } console.log(s); console.log(f(s, 4)); console.log(f 阅读全文

posted @ 2011-04-10 16:01 司徒正美 阅读(1688) 评论(1) 推荐(0) 编辑

2011年4月6日 #

判定是否原生方法

摘要: 浏览器的趋势是加入越来越多对象,像Worker,同时也为旧有的对象添加新方法。如何兼容它的第一步就是检测它们是否存在,没有则补上自己的兼容代码。这时问题就来了,有的类库是给你做了这一步,但有时没有,有时是做了,但并不符合标准。因此单纯是typeof Array.prototype.map === "function"可能不够用。这时isNative方法就要登场了。 我一直用的版本,自己写的: var isNative = function(method){//判定是否为原生方法 return !! method && (/\{\s*\[native code 阅读全文

posted @ 2011-04-06 17:14 司徒正美 阅读(1490) 评论(1) 推荐(0) 编辑

2011年4月4日 #

ruby1.9 hash的变化

摘要: 之前会对hash的键名进行排序:h = {}puts hh[1] = 1puts hh[0] = 0puts h # {0=>0,1=>1}1.9就不会再排序:h = {}puts hh[1] = 1puts hh[0] = 0puts h # {1=>1,0=>0}#http://www.igvita.com/2009/02/04/ruby-19-internals-ordered-hash/更简洁的hash字面量:h = {a: 2} #注意,冒号一定要紧靠键名puts h#http://www.oreillynet.com/ruby/blog/2007/06/on 阅读全文

posted @ 2011-04-04 14:53 司徒正美 阅读(1236) 评论(0) 推荐(1) 编辑

ruby 对文件的操作

摘要: 读取一个文件,将其打印出来:lines = File.open('dom.js').readlinesputs "======================="lines.each { |line| puts(line)}或者:File.open("dom.js") do |file| while line = file.gets puts line endend后一种能确保文件用完后被关闭。向目标文件追加内容:file = File.open("dom.js","a")file.puts &qu 阅读全文

posted @ 2011-04-04 14:24 司徒正美 阅读(6946) 评论(0) 推荐(0) 编辑

2011年4月3日 #

Object.create

摘要: function object(o) { o = Object(o); function F() {} F.prototype = o; var obj = new F(); var methods = ["toString", "toLocaleString", "valueOf"]; for (var i = 0; i 阅读全文

posted @ 2011-04-03 13:58 司徒正美 阅读(1406) 评论(0) 推荐(0) 编辑

上一页 1 ··· 76 77 78 79 80 81 82 83 84 ··· 125 下一页