随笔分类 -  JavaScript Language

摘要:jQuery是业内知名的javascript框架,它的实现和设计可以说代表了javascript界最高的水平,本文试从四个方面来以jQuery为例总结库与框架设计的原则和优劣判断。解决问题首先请看一个我实现的框架,我把这个库称为四则运算。function add(a,b) { return a+b;}function mul(a,b) { return a*b;}function minus(a,b) { return a-b;}function div(a,b) { return a/b;}这个库的API简洁优美,实现的更是优雅无比,它把四则运算统一成了函数形式,使得... 阅读全文
posted @ 2013-02-20 23:49 winter-cn 阅读(24476) 评论(34) 推荐(20) 编辑
摘要:问题 我的目标,非常简单,就是希望能够在我自己的系统中使用别人写的代码,但是这些代码可能会污染全局变量,甚至可能是恶意的,破坏性的。我要保证这些代码被正确执行,并且其影响范围完全受到控制,这就是我想要的沙箱。 根据我自己的思考以及和一些朋友的讨论,我认为我主要需要解决四点: 1.变量访问问题:第三方可以使用变量名访问到全局变量。 2.this问题:函数执行时的默认this值就是全局变量。 3.eval和Function问题:eval可以动态地生成代码,这些代码只有到运行时才能确定。 4.literal以及自动装箱问题:[] {}以及function可以构造出一些内置类的实例,这... 阅读全文
posted @ 2012-10-25 13:42 winter-cn 阅读(6224) 评论(2) 推荐(2) 编辑
摘要:OAuth2是基于HTTP的认证API,一般与OAuth2搭配的API也是基于HTTP的REST风格API(比如新浪微博和github),很多人一定想过是否可以直接从浏览器端调用REST API。 我最近做了一些这方面的研究,因为OAuth2中有secret key的存在,所以纯粹的客户端是不行的,但是服务端仅仅参与认证过程,由浏览器去调用REST API则是完全可行的。 于是比如你想开发一个github应用,那么服务端只需要一个没有界面的Auth服务就可以了,大部分的工作可以让浏览器端完成,这个架构可以大大减轻服务器的压力,对于不熟悉后端语言的前端工程师来说,是个不错的选择。 首先传统... 阅读全文
posted @ 2012-09-22 16:24 winter-cn 阅读(9548) 评论(10) 推荐(13) 编辑
摘要:身为一个分号党,我就不在唠叨自己的看法了,为了让我们的讨论更有价值,我挖掘出来一些材料跟各位分享。 JavaScript自动加分号规则,有3条 当有换行符(包括含有换行符的多行注释),并且下一个token没法跟前面的语法匹配时,会自动补分号。 当有}时,如果缺少分号,会补分号 当程序源代码结束时,如果缺少分号,会补分号。 利用我自己的JS语法分析工具JSinJS(https://github.com/kissjs/JSinJS ),我求出了所有能够出现在语句第一个的JS语法标记 (就是Statement的first集合),他们是: ... 阅读全文
posted @ 2012-06-20 20:42 winter-cn 阅读(12552) 评论(11) 推荐(3) 编辑
摘要:上篇博文发出来后感觉效果不是很好,遂写篇文章来解释解释。本文可以认为是上篇文章 JavaScript词法(http://www.cnblogs.com/winter-cn/archive/2012/04/17/2454229.html)的扫盲说明:) 阅读全文
posted @ 2012-04-18 20:57 winter-cn 阅读(4202) 评论(6) 推荐(1) 编辑
摘要:所有编程语言都有词法和语法,JavaScript也不例外,虽然大部分人对于最基础的词法都基本了解,但是仔细咀嚼细节,还是有很多有趣之处,特别是ES5对词法做出的一些细微变动,可以传达出一些JS语言的发展思路。 阅读全文
posted @ 2012-04-17 20:22 winter-cn 阅读(8069) 评论(16) 推荐(10) 编辑
摘要:ES5新特性的例子和简短说明 阅读全文
posted @ 2012-02-28 13:30 winter-cn 阅读(5528) 评论(2) 推荐(5) 编辑
摘要:今天终于抽出时间瞟了一眼JavaScript的新标准ECMA262v5,让我欣喜的是,不像是因为过于激进而被废除的v4,这个新标准对JavaScript保留了ECMA262v3时代大部分的语言特性,把重点放在了修补旧标准中被人诟病的问题上,而且加入了许多令人期待的新特性和新功能。因为我还没有很深入研究,这里仅仅是分享我快速浏览时看到的一些主要的亮点和变化,请不要把本文当作一个全面的新旧标准对比,也欢迎大家补充。 阅读全文
posted @ 2009-12-22 02:00 winter-cn 阅读(4757) 评论(21) 推荐(3) 编辑
摘要:什么叫做类型?简单地说,类型就是把内存中的一个二进制序列赋予某种意义。这篇随笔系统地介绍了JavaScript的类型。 阅读全文
posted @ 2009-12-07 00:40 winter-cn 阅读(15160) 评论(23) 推荐(6) 编辑
摘要:一般来说大家比较熟悉的面向对象方式是基于类的面向对象,声明一个类,然后在根据类声明的描述去创建对象,通过类与类之间的继承和组合关系来复用代码。而JS的设计采用了一种完全不同的思路。 阅读全文
posted @ 2009-05-16 17:33 winter-cn 阅读(16785) 评论(15) 推荐(6) 编辑
摘要:ECMA262中规定JS使用Scope Chain来实现closure,Scope Chain是JS中非常重要的机制,JS中所有的标识符(Identifier)都是通过Scope Chain来查找值的。下面的部分是关于ECMA262及其实现SpiderMonkey和JScript如何用Scope Chain和[[scope]]来实现closure的。 阅读全文
posted @ 2008-07-07 02:02 winter-cn 阅读(8146) 评论(12) 推荐(1) 编辑
摘要:浏览器中内存泄露的最佳解决方案 阅读全文
posted @ 2008-06-26 23:17 winter-cn 阅读(6275) 评论(10) 推荐(3) 编辑
摘要:FF里面有不少让人爱不释手的私有属性和方法 它们却没有被ECMAScript支持 阅读全文
posted @ 2008-06-19 11:34 winter-cn 阅读(1200) 评论(2) 推荐(1) 编辑
摘要:基于原型的编程是面向对象编程的子系统和一种形式。在基于原型的编程中,类不是实时的,而且行为重用(通常认为继承自基于类的语言)是通过复制已经存在的原型对象的过程实现的。这个模型一般被认为是class-less, 面向原型,或者是基于接口的编程。 阅读全文
posted @ 2008-06-02 14:17 winter-cn 阅读(2716) 评论(0) 推荐(0) 编辑
摘要:JS简单么?JS简陋么?JS不能面向对象么? 继承     类继承         类抄写         类冒充         原型抄写     元类继承     原型继承         引用型原型         复制型原型 阅读全文
posted @ 2008-06-01 22:47 winter-cn 阅读(2486) 评论(0) 推荐(2) 编辑
摘要:在这个js框架随处乱跑的时代,你是否考虑过写一个自己的框架?下面的内容也许会有点帮助。 PrototypeJS JQuery YUI Mootools DWR DOJO Ext 这些框架并非遥不可及也不是完美无瑕。 阅读全文
posted @ 2008-05-22 14:21 winter-cn 阅读(10302) 评论(5) 推荐(4) 编辑