JS
iteye_19872
这个作者很懒,什么都没留下…
展开
-
Prototype 1.6的超级符咒
Ajax in Practice 中写道:With the sleight-of-hand tricks that Prototype provides us for declaring JavaScript object classes...译成:Prototype赐予了我们魔术手法般的技巧来声明JavaScript对象类。不过这个书里写的是Prototype 1.5.x...2008-03-04 04:18:08 · 109 阅读 · 0 评论 -
JavaScript的EOS(分号)问题
在[url]http://bbs.51js.com/viewthread.php?tid=83937&extra=page%3D1&page=1[/url]的讨论中,月影分析了JavaScript中EOS(End of Statement)存在的歧义问题。下面是我的回应。是否要写“;”呢?我经过几次反复。最开始是随便,想写就写。后来都不写。后来有段时间都写。...2009-05-08 16:24:22 · 93 阅读 · 0 评论 -
写对正则:一行代码,速度差50倍
2009-05-11A lesson of RegExp: 50x faster with just one line patchWhile I'm developing WebSHi(which is the fastest syntax highlighter written by JavaScript), I alsowrite many performa...2009-05-12 03:43:37 · 66 阅读 · 0 评论 -
简述JavaScript的scope机理
小麦正在写《[url=http://www.mikkolee.com/81]作用域链 词法作用域 与 闭包[/url]》系列。这个第一篇中间的内容讲得大体都是对的,但是还是搞得太复杂。倒是头尾两句话非常具有典型意义:[quote]什么叫闭包?我花了很长时间来弄明白这个概念,但每次以为弄明白的时候,却又会发现其实没搞清楚。[/quote][quote]……这究竟是为什么,我目前还不清楚。但据...2008-11-21 17:16:50 · 198 阅读 · 0 评论 -
如何将let结构转换到ES3代码
[color=red][size=large]【2011年7月12日更新】本文所述的“with”转换方式存在一些缺点,请进一步阅读[url="http://hax.iteye.com/blog/1122690]如何将let结构(block scope)转换到当前的JavaScript代码[/url][/size][/color][size=medium]以下是2008年11月的原文。[...2008-11-25 04:16:43 · 150 阅读 · 0 评论 -
ES 3.1赶进度
今天看了几篇es-discuss邮件列表上的讨论。一个印象是,ES3.1为了赶进度将砍掉一些特性(我不是说像package/import那样的,那早就被砍得连到ES4都看不到了)。例如 let / const 之类的。尽管看上去这些特性很容易实现,也挺有用,但是因为缺乏足够的实践测试可能进一步延误ES3.1的出台。BE威胁说(“威胁”二字是我的主观印象):With zero i...原创 2008-11-29 02:04:25 · 159 阅读 · 0 评论 -
JavaScript的未来方向之观察
最近每次去杭州,都有爱民做东道,这次吃羊排不亦乐乎。席间不免聊起技术话题,爱民问我对JavaScript的未来方向的看法,特别是像Class、Inheritence等静态特性是否会引入语言?这确实是一个令人关心的问题。很长一段时间以来,ES4的难产和分歧让人始终对JavaScript的未来感觉蒙有一层面纱,即使ES5.1都已经发布,我们仍不免心存疑虑。不过,根据我的观察,从ES5所...2011-07-12 02:53:39 · 193 阅读 · 0 评论 -
如何将let结构(block scope)转换到当前的JavaScript代码
本文是对[url=http://hax.iteye.com/blog/277398]如何将let结构转换到ES3代码[/url]的补充。首先,原文所说的将let转换为with的方法有几个缺陷需要说明:1. with虽然可附加一个新的scope,但是由于引入的是一个JS对象,所以Object.prototype上的属性也被引入了该scope。比方说你无法在with里访问外部的toSt...2011-07-12 17:24:26 · 237 阅读 · 0 评论 -
关于国内前端和JS技术发展的乱想
玉伯在我的一条微博后面写了一些(和主题不是很相关但)非常值得思考的评论。而这些评论的源头来自于我非常尊敬的不在你们前端界混的JS大师愚公(爱民)。摘录如下:[quote="玉伯也叫射雕"]想起愚公的一番言论:我们做了一个不错的东西,有很多好的 IDEA。最终这些东西却消散了,变成了另外一些更大更好的东西的局部。我们的努力白费了。我们的成果湮没了。我们——我指的是国内的软件开发的...2011-07-19 18:53:35 · 295 阅读 · 0 评论 -
如何判断一个函数的意图是被用作构造器,也就是可视为“类”
前提是不要求做什么特殊标记。只是最大可能的猜测函数的作用大概是当“类”使用。我想了一个方式:function isClass(f) { var names = Object.keys(f.prototype) return names.indexOf('constructor') === -1 || names.length > 1}这里的假设是,作为构...原创 2011-07-21 13:55:32 · 153 阅读 · 0 评论 -
7月30日的广州演讲视频和Slides
7月30日在W3CTech广州站活动上的演讲,题目是:ECMAScript 5 —— Improve the Safety of JavaScript 。主要内容是对ECMAScript 5的Strict模式的几个实例介绍,以及其他几个关于代码安全性的例子。视频:[url]http://v.youku.com/v_playlist/f6520341o1p10.html[/url]Sli...2011-08-01 23:38:01 · 113 阅读 · 0 评论 -
我为什么是DC黑─Why I disagree with Douglas Crockford
参加完了[url=http://www.qconbeijing.com/]QCon北京大会[/url],最有收获的是两场演讲:[url=http://blogtrader.net/wiki/WikiStart]邓草原[/url]对Scala和Erlang的比较,以及[url=http://jim.webber.name/]Jim Webber[/url]对Rest的阐述。当中还抽空去[url=ht...2010-04-26 17:51:27 · 127 阅读 · 0 评论 -
shim是应该抛异常还是应该fail silently?
玉伯发布了[url=https://github.com/seajs/dew/tree/master/src/es5-safe]es5-safe模块[/url],这是一个有一点类似[url=https://github.com/hax/es5-shim]es5-shim[/url]的项目。个人认为玉伯这个模块对于准备从ES3过渡到ES5的前端开发者来说是一个稳妥的选择。在本文的最后部分会进...2011-08-11 17:26:16 · 310 阅读 · 0 评论 -
Module与Trait的比较
最近我多次提及module和trait。粗看,我们可以发现它们有一定的相似处。两者其实都是为了组织代码单元,并在代码上施加更多的约束,且约束的方式有点类似。目前典型的module是定义require和exports,即需要哪些包(所提供的类和函数),和输出哪些类和函数。而trait是定义一组方法,并声明这些方法所依赖的方法(即require某些方法)。比如 Iteratio...2011-08-12 12:50:42 · 253 阅读 · 0 评论 -
JS之父再谈JS历史(续完)
又到年底,我觉得是时候还债了。自开blog来,我出了不少“太监文”,也就是有上文无下文的。这里就是一篇:[url=http://hax.iteye.com/blog/190436]《JS之父再谈JS历史(一)》[/url]。今天本来打算把这篇翻译完的,但是才写了几句,准备上网搜索几个背景人物,却发现松峰老师去年这个时候已经帮我还债了!所以我这篇“续完”实际上是厚颜无耻的把松峰老师的...2010-12-31 04:20:25 · 304 阅读 · 0 评论 -
如何创建一个JavaScript裸对象
所谓裸对象,即 naked object ,是指没有原型(spec中以[[proto]]内建属性表示)的对象。JavaScript是少见的采用原型继承的语言。访问一个对象的属性时,会首先看它自己的属性,所谓 own property 是也,如果找不到,则在其原型中查找,再找不到就继续找这个原型的原型,这就构成所谓的原型链。原型继承提供了一种很独特的共享信息的方式,不过也带来一些有趣...2012-08-27 02:11:06 · 178 阅读 · 0 评论 -
JavaScript语句后应该加分号么?
[size=medium]这是一个老生常谈的问题了。我之前就曾经写过[url=http://hax.iteye.com/blog/382186]一篇blog[/url]记录了我对此问题的实践与思考之旅。最近在知乎上又出现了这方面的争论,而且几乎是一面倒的支持“总是写分号”。这让我深深觉得是时候正本清源,祛除迷信了。于是我在问题[url]http://www.zhihu.com/question/2...2012-06-19 03:10:13 · 235 阅读 · 0 评论 -
JavaScript五大关键字
近期做语法高亮项目的副产品,是统计了一下几个主流JS工具包中各关键字的使用频率。虽然不同代码库的前五位的关键字的顺位有所差别,但是与五名之后的差距都是非常显著,第五位都要比第六位多至少一倍,前五位关键字占所有关键字比例都超过60%,最多的Prototype库甚至超过90%。以下顺位为我综合各关键字在各个代码库中的排位以及其他因素所评定:第五位:[b]var[/b]未声明...2009-05-06 17:53:20 · 172 阅读 · 0 评论 -
JScript的函数声明和函数表达式
JScript在函数声明和函数表达式方面不合ECMA标准,这已经是一个老生常谈的话题了。最近[url=http://blog.csdn.net/aimingoo/archive/2008/07/22/2692512.aspx]aimingoo谈到eval问题[/url]的时候再一次触及到这个问题。大体就是 eval('(function (){})') 不返回函数对象,但是 eval('(...2008-08-19 16:11:04 · 156 阅读 · 0 评论 -
JS解析测试代码片段
前一日与jindw聊天,谈到了正在研究的JS代码转换。譬如JSA所作的,其实就是一种代码转换。PIES为了实现namespace(package)的管理,对JavaScript源代码也进行了处理。为了保证效率,所以想方设法只做了最最简单的预处理,也就是对代码段加头加尾,这样只是简单的字符串串接,对于效率是没有影响的。但是最近在考虑是否有可能支持一些JS2(ES4)的特性,譬如支持l...2008-04-10 17:19:42 · 111 阅读 · 0 评论 -
JS之父再谈JS历史(一)
译自[url=http://weblogs.mozillazine.org/roadmap/archives/2008/04/popularity.html]Brendan Eich的Blog上Popularity一文[/url]。【】内为我的注。Popularity关于流行It seems (according to one guru, but coming from thi...2008-05-07 01:53:42 · 470 阅读 · 0 评论 -
测试一下你属于哪种人
抄自[url]http://www.terrainformatica.com/index.php/?p=32[/url]What will following JavaScript function return?function test() { try { return "I am optimist"; } f...原创 2008-05-11 04:20:48 · 119 阅读 · 0 评论 -
ECMAScript规范可能存在缺陷
原讨论帖地址是[url]http://www.iteye.com/topic/101506[/url]首先,这一个帖子中,Lich_Ray按照ECMA规范来推导,这个尝试是好的,但是ECMAScript的规范是出了名的佶屈聱牙,所以不幸的,Lich_Ray同志也未幸免。。。[quote="Lich_Ray"]看来我就此开个 JavaScript 专栏一心和你们讨论这些问题算了。...2007-07-20 18:18:00 · 256 阅读 · 0 评论 -
关于JScript 5.6及其之前(IE6)引擎的创建对象的性能问题
这个问题很早就知道,即在对象数量达到一定程度的时候(例如50000),创建新对象的速度明显下降。过去在和aimingoo共事的时候(2006年的某个时候),我花时间研究了一下。当时我首先猜测是否是在一个closure里,因为当前[[scope]]下可访问的变量太多造成的,即我怀疑是jscript的name resolve的问题,但实际写了一些测试用例证明这个猜测是错误的。任何时候,只要存在...2007-07-23 11:47:25 · 85 阅读 · 0 评论 -
ECMAScript 3.1 的Strict模式
Mozilla的JavaScript引擎SpiderMonkey和Rhino很早开始引入了Strict模式,现在ES3.1规范草案将Strict模式进行了标准化。在程序首或函数首使用Strict指令即可启用Strict模式。废话不说,[url=http://www.cuihua.org]翠花[/url],上代码:[code="JavaScript"]// 本段脚本启...2009-01-13 03:37:18 · 89 阅读 · 0 评论 -
JScriptShell 0.1
WSH只能直接执行脚本文件,不像rhino/jsshell/jshost(jslibs)等,都有交互模式。所以自己写了一个JScriptShell玩。废话不说,[url=https://cuihua.org/]翠花[/url],上代码!jscriptshell.js[code="JavaScript"]/***********************************...2009-02-06 08:34:48 · 98 阅读 · 0 评论 -
JScript的Array.toString居然曾有这样的bug啊。。。
[url]http://support.microsoft.com/?scid=kb;en-us;281148[/url]调用过Array对象的toString和toLocaleString方法,该数组就不会释放,从而内存泄露。据说原因是toString方法没有释放该Array对象的引用!标了是JScript 5.5的bug,我手头测试了JScript 5.7,并无此问题。不知道J...2009-02-12 19:22:43 · 105 阅读 · 0 评论 -
JScript下Array对象的性能问题
今天看了微软JScript官方blog上去年的两篇文章:[url]http://blogs.msdn.com/jscript/archive/2008/03/25/performance-optimization-of-arrays-part-i.aspx[/url][url]http://blogs.msdn.com/jscript/archive/2008/04/08/performa...2009-02-14 02:51:37 · 98 阅读 · 0 评论 -
IE全局变量的Dissociative Identity Disorder(人格分裂症)
最近,小麦提出了[url=http://www.mikkolee.com/120]一个疑惑[/url]:[quote="小麦"]最后介绍一个我也搞不明白的问题:在HTML文档里写上这段代码: window['a'] = 'Hi'; alert(a);然后在out.js里写上这句: if(false) { var a...2009-03-16 02:47:48 · 1848 阅读 · 0 评论 -
curry和partial的差别
51js上asfman翻译了[url]http://ejohn.org/blog/partial-functions-in-javascript/[/url]讨论在:[url]http://bbs.51js.com/viewthread.php?tid=83359&extra=page%3D1[/url]curry和partial的差别就是:curry是斩首...2009-03-28 00:15:03 · 148 阅读 · 0 评论 -
JavaScript的Closure陷阱
有这样一种新的JS pattern:[url=http://peter.michaux.ca/article/3556/]Lazy Function Definition Pattern[/url],realazy同志的翻译在此:[url]http://realazy.org/blog/2007/08/16/lazy-function-definition-pattern/[/url]大体...2007-08-17 17:53:54 · 66 阅读 · 0 评论 -
改写函数实际上违背了FP的无副作用的精神
在[url=http://hax.iteye.com/blog/113565]上一篇帖子[/url]中,我讨论了Peter提出的[url=http://peter.michaux.ca/article/3556]Lazy Function Definition Pattern[/url],我指出了这个pattern并不能带来性能的提升,而所使用的closure也有可能造成内存泄漏。当然内存...2007-08-18 04:27:48 · 79 阅读 · 0 评论 -
鸡肋的E4X
前两天,[url=http://blog.csdn.net/aimingoo]Aimingoo[/url]问我如何能捕获E4X对象的事件(如修改了一个属性),我这两天稍做了研究,发现:还真没办法!问题在于E4X的模型,与现有JavaScript和DOM模型根本是不同的!所以E4X的xml对象上,根本没有addEventListener之类的方法。而E4X的操作也不是基于对象...2007-09-10 14:13:32 · 100 阅读 · 0 评论 -
window.eval 及相关方法总结
前面有帖子说到在函数里如何能在全局空间上eval。 虽然此种需求在绝大多数情况下是不合理的,但是仍有极少数情况可能确实有需要。 JScript有execScript方法可以用来执行脚本。其第一个参数为代码字符串,第二个参数为脚本语言,可以选择jscript或者vbscript。而在其他脚本引擎中,SpiderMonkey保留了JS最早时候的在对象上的eval方法。也就是在任何对象上,都...2007-09-24 10:07:30 · 165 阅读 · 0 评论 -
JS优化原则
JS优化已经讨论了很多了,最近又看到[url=http://blog.csdn.net/aimingoo/archive/2007/08/29/1764224.aspx]aimingoo的一篇[/url]。大体上,aimingoo的说法都是非常正确的。除了像aimingoo做个案研究外,这里我想从更一般的角度总结在浏览器编程中JS优化的几个原则。首先,与其他语言不同,JS的效率很大...2007-09-25 11:14:19 · 143 阅读 · 0 评论 -
论ES6模块系统的静态解析
[size=medium]本文是Dave Herman的《[url=http://calculist.org/blog/2012/06/29/static-module-resolution/]Static module resolution[/url]》一文的编译。Dave Herman是TC39的成员,ES6 module系统的champion。【ES6 spec太大了,所以分成许多可相对独立...2013-03-14 04:56:27 · 354 阅读 · 0 评论