JavaScript/CSS
文章平均质量分 74
RayChase
博客搬家了: https://www.raychase.net/
展开
-
JavaScript 的 delete 用法
1、 var o = {}; o.x = new Object(); delete o.x; // 上一行new的Object对象依然存在,只是删掉了o.x这个属性,因此千万不要把delete类似成析构函数了 2、 var global = 42; delete global; // 删除Global.global 3、 并不是所有的属性都能被delete。例如,prototype中声明的属性就无法被delete:function C() { this.x = 42; }C.prototyp转载 2011-01-09 11:59:00 · 1940 阅读 · 0 评论 -
转:解剖JavaScript中的null和undefined
在JavaScript开发中,被人问到:null与undefined到底有啥区别? 一时间不好回答,特别是undefined,因为这涉及到undefined的实现原理。于是,细想之后,写下本文,请各位大侠拍砖。 总所周知:null == undefined 但是:null !== undefined 那么这两者到底有啥区别呢? 请听俺娓娓道来... null 这是一个对象,但是为空。因为是对象,所以 typeof null 返回 'o原创 2011-04-16 08:06:00 · 1229 阅读 · 0 评论 -
JavaScript重构(七):重用老代码
在Java中,有这样一段老代码: class Round{ public void drawRound(); //画圆 } 现在新代码希望能和它共存,使用一个Person的对象来控制,只不过,可能drawRound,也可能drawRect啊: class Rect{ public void drawRect(); //画方 } 好,废话少说,我先想到了Adapter模式: interface Drawable{ public vo原创 2011-04-22 23:51:00 · 2107 阅读 · 1 评论 -
Javascript Memoizer
以下来自John Hann的实现,这段代码引起了我的注意,它用巧妙的方法把方法调用的结果缓存起来了。 代码解析:// memoize: 使用memoization来缓存的通用方法 // func: 要被缓存的方法 // context: 方法执行上下文 // Note: 方法必须是外部可访问的,参数是可字符序列化的 function memoize (func, con原创 2011-06-20 23:52:00 · 1093 阅读 · 0 评论 -
随手记:为系统设计一套简易的JavaScript框架需要考虑的要素
最近在工作中做前端的重构,其中一个重要步骤就是设计一套简易的前端框架,把所想到的随手记下来: 物理和分布 js文件布局 模块化 依赖关系梳理 加载梳理 技能储备 JavaScript进阶 JavaScript面向对象 JQuery(或其他JavaScript基础框架)熟悉使用 规范和规则 JavaScrip原创 2011-06-21 23:25:00 · 1174 阅读 · 0 评论 -
转:IE6终极备忘:修复IE6下 25+ Bugs
IE6终极备忘:修复IE6下 25+ Bugs [译]IE6终极备忘:修复IE6下 25+ Bugs 2010年01月08日 | HTML/CSS, JavaScript 去年就想将IE的bug系统地整理下,但一直都忙于工作、学习没有完成,看到这篇E文后,我毫不犹豫的放下了手中的工作将之翻译出来。 由于是第一次译文,所以错误在所难免,欢迎大家批评指正。 原文:Ultimate IE6原创 2011-06-27 23:40:00 · 1770 阅读 · 0 评论 -
JavaScript重构(二):JS的动态加载
前一节留下了一个问题,如果JS分门别类也清晰了,那我现在需要在必要的情况下才加载某一模块的JS,这个怎么实现呢? 方法一,最简单也是最容易被接受的方法,通过后台代码来控制,还是少些复杂的JS吧,通过一个标签、一个分支判断,就可以做到,何乐而不为呢? 方法二,如果要原创 2011-04-10 22:54:00 · 3026 阅读 · 2 评论 -
JavaScript重构(九):自定义的JavaScript产品框架
产品做到一定程度,JavaScript不仅仅需要几个层面上的重构,而需要将这些合理的、零散的重构集成起来、系统化,最终形成一套适合自己产品的前端框架。以某套产品的前端框架为例,包含了这么几个组件:1、通用工具组件,提供了UI组件最基础的通用能力,包括:日志、缓存、数据共享原创 2011-08-14 18:14:43 · 1377 阅读 · 0 评论 -
JavaScript重构(汇总帖)
前一阵集中一段时间做了JavaScript的重构,留下了一点点脚印,在这里汇总一下。如果您对这一专题感兴趣,或者希望补充一些内容,欢迎留言,我会在后续更新进去。谢谢。 JavaScript重构(一):模块划分和命名空间模块划分是JavaScript重构的原则之一,也是原创 2011-05-15 21:28:00 · 2507 阅读 · 0 评论 -
JavaScript并发下载
在IE6/7里JavaScript会从两个方面阻碍页面呈现:script标签下面的网页资源在script加载完之前会停止请求、下载。 script标签下面的html元素在script加载完之前会停止渲染。 在ie6/7 firefox2/3 Safari3 Ch原创 2011-08-21 13:34:04 · 1439 阅读 · 0 评论 -
JavaScript重构(五):利用原型和闭包,完成组件方法
终于要定义一个组件方法了,利用原型来实现。看看这样如何: function Player(name){ Player.MIN_EXTENDED_TIME = 1; Player.MAX_EXTENDED_TIME = 3; this._name = name; }; Player.prototype.setName = function(name){ this._name = name; }; P原创 2011-04-16 17:53:00 · 2351 阅读 · 4 评论 -
JavaScript重构(六):利用继承来做事
终于要说到JavaScript的继承了,原型链继承是最常用的一种方式: function Video(){}; function Movie(){}; Movie.prototype = new Video(); Movie.prototype.constructor = Movie; //不要丢失构造器 啰嗦一句,如果我拿到的是方法的实例,一样可以做继承: function Video(){}; functi原创 2011-04-18 22:25:00 · 4186 阅读 · 12 评论 -
重构:CSS也面向对象
最初接触到面向对象的CSS还是因为项目中的CSS已经超过八千行,缺乏约束和管理,在近期或者是不远的将来,有迫切的要求需要重构。在前端重构中,我们已经讨论过了JavaScript面向对象的重构,在这个时候再看一看CSS面向对象和模块化,这给我的工作提供了非常好的思路。 首先,我要说的是,在这个概念翻飞的年代里,固执地追求某些概念和涵义,并不能带来更优秀的设计和更高的生产力,面向对象是一种思路,或者说是一种方法论,给CSS重构带来一些启示,这就足够了,没有必要去纠结OO CSS的定义和严谨性。 我们的原创 2011-06-01 22:07:00 · 1441 阅读 · 0 评论 -
服务器端JavaScript
JSConf2010的重要议题之一:node.js。 不要觉得服务器端JavaScript是个新概念。其实老早就有了,从九六年Netscape普及JavaScript的时候,服务器端和客户端都是考虑到了的,只不过只有客户端健壮发展起来了,服务端的故事直到现在才被慢慢提起。 看看有什么优势: 最大的优势,不过是统一了服务端和客户端的开发语言,真正可以看到客户端服务端一起开发和一统天下的格局,兴许对开发人员的要求能降低?可以真正看到服务端的代码到了客户端一样重用。不仅仅是数据模型,也保证了一些业务逻辑可以原创 2011-01-11 00:05:00 · 5686 阅读 · 0 评论 -
疯狂的跨域技术
[转]疯狂的跨域技术 原帖地址:http://itgeeker.com/mathml/readpaper?pid=53 JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。 JavaScript这个安全策略在进行多iframe或多窗口编程、原创 2011-01-09 19:39:00 · 2385 阅读 · 4 评论 -
JSConf 2010 (一):介绍、Google Chrome Frame 和 GitHub
一年一度的JSConf大会又召开,这是2010的官网 http://jsconf.us/2010: 真是够简陋的。 其中的Sliders请看这里:http://devthought.com/2010/05/03/jsconf-2010-slides Chris Williams 和 Iterative Designs 创立了JSConf,这是JavaScript开发者的第一个专业会议。这应该是在2009年 http://jsconf.us/2009: 09年其实还有Mix09、Velocit原创 2011-01-12 00:15:00 · 2067 阅读 · 0 评论 -
JSConf 2010 (二):JS的模式编程、微格式 和 MooTools
模式编程(programming to the patterns) JS的通用库最基本的目的是给你解决浏览器兼容性差异,Prototype和JQuery是做得最好的两个库。 JQuery对Dom的DSL化封装,还有对method chain的大量使用,几乎让你感觉在声明行为,所以它让非常多的对啰嗦的Dom编程厌烦的前端程序员迅速“上瘾”。但是,我们知道DSL化的JQuery还不够,因为它很好的解决了可读,但是并不一定容易维护(尤其是过度使用method chaning)。 其实Javascript的各原创 2011-01-13 00:01:00 · 1228 阅读 · 0 评论 -
JSConf 2010 (三):Raphaël、优化前端性能
提到Raphaël,就得先说说SVG,可缩放矢量图形(Scalable Vector Graphics,SVG)是基于可扩展标记语言(XML),用于描述二维矢量图形的一种图形格式。SVG由W3C制定,是一个开放标准。SVG严格遵从XML语法,并用文本格式的描述性语言来描述图像内容,因此是一种和图像分辨率无关的矢量图形格式。 SVG图形格式优点: 1. 图像文件可读,易于修改和编辑 2. 与现有技术可以互动融合。例如,SVG技术本身的动态部分(包括时序控制和动画)就是基于SMIL标准。另外,SV原创 2011-01-14 00:48:00 · 1388 阅读 · 0 评论 -
翻译:JavaScript and Ant
这则教程是使用Ant的JavaScript和XSLT的汇总,阅读对象适合于中高级的WEB界面开发者。简述之,见笑了。 这则教程来自于Ant使用的邮件列表和手册,社区和论坛提供了更多的和更新的资讯,如果有一些涉及到不公开和版权的问题,请联系作者修改内容。 本文档中所有的邮件地址都做了反网络爬虫处理,替换at为@就是真正的邮件地址。 警告:不对本文的正确性、及时性以及由本文造成的损失负责。本文版权属于开源社区,可以自由拷贝、修改、转帖,请对自己复制和转发等行为负全责。 最新文档参见:http://www原创 2011-01-26 00:20:00 · 2506 阅读 · 0 评论 -
JavaScript重构(一):模块划分和命名空间
通常我们的团队中,开发人员在Java语言层面具备相当的技术素养,经验丰富,而且有许多成熟的、合理的规约,类型繁多的代码隐患检查工具,甚至在团队间还有计划内的评审和飞检。但是前端的代码不似后台,就像一个没人疼的孩子,不仅仅容易被低估、被轻视,导致质量低劣、可维护性差,技能上,更缺少优秀的前端开发人员。 JavaScript是前台代码中重要组成部分,随着版本的延续,产品越做越大,JavaScript层面的重构,需要在整个过程中逐步强化起来。 当代码量达到一定程度,JavaScript最好能够与页面模块原创 2011-04-10 22:20:00 · 2840 阅读 · 1 评论 -
JavaScript重构(三):JavaScript的测试
进行JavaScript重构时,我希望引入易于使用的测试框架来保证重构的顺利进行,未来能持续通过测试代码对JavaScript逻辑的正确性做保障。 JsUnit (http://sourceforge.net/projects/jsunit/,http://www.jsunit.net/) JsUnit是一个独立的JavaScript单元测试框架,和JUnit差不多,没有上手难度,包括传统的setUp和tearDown,提供的assert方法也和JUnit类似,多了assertNaN和assertUnd原创 2011-04-12 00:30:00 · 6954 阅读 · 7 评论 -
JavaScript重构(四):JavaScript编码规则
没有规矩,不成方圆,JavaScript带来了灵活性,也带来了不受控的变量和访问,所以要用规则限制它。一支成熟的团队,还是一支新鲜的团队,规则应当是不一样的,我只是列出一些常见的或者有效的办法,来约束跳跃的开发人员,思维可以任意飞跃,代码却要持续受控。当然,任何规则都是建立在一定的认知基础之上的,面向对象JavaScript的基础是必备的,否则一切无从谈起。 变量和方法控制: 模块开发不允许存放独立的全局变量、全局方法,只允许把变量和方法放置到相应模块的“命名空间”中,对此的解释请参见此文。实在心原创 2011-04-13 00:12:00 · 1706 阅读 · 0 评论 -
JavaScript重构(八):JSDoc和JSLint
JSDoc可以生成类似于JavaDoc一样的API文档,这对于前端开发是必不可少的。下载jsdoc-tookit(http://code.google.com/p/jsdoc-toolkit/)和jsdoc-tookit-ant-task(http://code.google.com/p/jsdoc-toolkit-ant-task/),CSDN的转义功能有问题,所以把尖括号都换成了书原创 2011-04-30 20:29:00 · 3316 阅读 · 2 评论