Fork me on GitHub

随笔分类 -  其他

上一页 1 ··· 3 4 5 6 7 8 下一页
轻量级前端MVVM框架avalon - 模型转换
摘要:接上一章 ViewModelmodelFactory工厂是如何加工用户定义的VM?附源码洋洋洒洒100多行内部是魔幻般的实现 1: function modelFactory(scope) { 2: var skipArray = scope.$skipArray, //要忽略监控的属性名列表 3: model = {}, 4: Descriptions = {}, //内部用于转换的对象 5: json = {}, 6: ... 阅读全文
posted @ 2013-06-21 13:20 【艾伦】 阅读(3812) 评论(2) 推荐(6) 编辑
吐槽:基于PhoneGap开发移动项目
摘要:目前,随着Google的Android手机和苹果的iphone手机的逐渐普及,越来越多开发者加入到移动应用开发的大军当中。其中,Android应用是基于Java语言基础上进行开发的,而苹果公司的iphone则是基于C语言开发的。如果开发者编写的应用需要同时在不同的移动设备上运行的话,则必须要掌握多种开发语言。而为了进一步简化移动应用的编程,Nitobi公司推出了一套开源的移动应用解决方案PhoneGap, 网址 http://phonegap.com/ 说白了就是一个用基于HTML,CSS和JavaScript的,做出类似原生态代码开发的软件应用, 36Kr上提到的http://www.36. 阅读全文
posted @ 2013-06-20 21:04 【艾伦】 阅读(1438) 评论(6) 推荐(1) 编辑
(译)ECMAScript 5 Objects and Properties (二)
摘要:继 (译)ECMAScript 5 Objects and Properties 全文地址http://ejohn.org/blog/ecmascript-5-objects-and-properties/ @by Aaron新功能新增加一些有趣的新特性已经被引入到语言以下两个方法是非常有用的,用于收集所有的属性的数组对象。Object.keys( obj )将会返回一个字符串格式的数组表示所有可枚举的对象属性名,相同方法的一个实现代码实现:Object.keys = function( obj ) { var array = new Array(); for ( var prop in... 阅读全文
posted @ 2013-06-16 22:35 【艾伦】 阅读(459) 评论(0) 推荐(0) 编辑
(译)ECMAScript 5 Objects and Properties (一)
摘要:原贴:http://ejohn.org/blog/ecmascript-5-objects-and-properties/ @by: Aaron 有一些新的API包含在规范中,但是更多有趣的功能发挥作用是 对象/属性 代码,如何使用能作用你的对象,通过私有的"getters" 和 "settses",阻止枚举,操作,或者删除,甚至防止添加新属性.简而言之:你将能够复制和扩展现有的基于JavaScript的api(如DOM)只使用JavaScript本身。 也许最重要的是,尽管:这些特性将到达在所有主要的浏览器。所有主要的浏览器厂商从事规范并同意实施在他们 阅读全文
posted @ 2013-06-16 11:11 【艾伦】 阅读(785) 评论(0) 推荐(1) 编辑
js中两个感叹号的原理与用法分析
摘要:在javascript中有时会看到有两个!!的用法 Js代码varfoo;alert(!foo);//undifined情况下,一个感叹号返回的是true;alert(!goo);//null情况下,一个感叹号返回的也是true;varo={flag:true};vartest=!!o.flag;//等效于vartest=o.flag||false;alert(test); 这段例子,演示了在undifined和null时,用一个感叹号返回的都是true,用两个感叹号返回的就是false,所以两个感叹号的作用就在于,如果明确设置了变量的值(非null/undifined/0... 阅读全文
posted @ 2013-06-09 15:20 【艾伦】 阅读(19580) 评论(3) 推荐(11) 编辑
javascript的类型默认转换机制.
摘要:javascript是一门弱类型语言 它的函数形参不指定类型 它的变量在赋值时连同类型一起覆盖所以不存在类型转换问题,等等,不存在类型转换问题?哦 只是赋值时不存在类型转换问题。 javascript的类型转换主要存在于表达式运算过程中,更直接的说,js的类型默认转换几乎全是由运算符引起的,这篇文章里还会讨论显式转换。在js的运算符中 有以下几类+运算符 只作用于字符串和数字- * / %只作用于数字! 只作用于布尔型如果我们对2个变量a 和b使用+运算符 a+b那么 js解释器也许会面对这样一个问题: a和b也许不都是数字并且不都是字符串此时 他将如何做呢?最基本的答案是 调用a 和b的 v 阅读全文
posted @ 2013-06-08 11:33 【艾伦】 阅读(599) 评论(0) 推荐(2) 编辑
Apply和数组:三个技巧
摘要:apply方法apply是所有函数都有的方法.它的签名如下:func.apply(thisValue, [arg1, arg2, ...])如果不考虑thisValue的影响,上面的调用等同于:func(arg1, arg2, ...)也就是说,apply允许我们将一个数组"解开"成为一个个的参数再传递给调用函数.让我们分别看看apply使用中的三个技巧.技巧1: 将一个数组传递给一个不接受数组作为参数的函数JavaScript中没有返回一个数组中最大值的函数.但是,有一个函数Math.max可以返回任意多个数值类型的参数中的最大值.再配合apply,我们可以实现我们的目的 阅读全文
posted @ 2013-05-26 14:03 【艾伦】 阅读(664) 评论(0) 推荐(3) 编辑
[译]JavaScript:函数的作用域链
摘要:[译]JavaScript:函数的作用域链原文:http://blogs.msdn.com/b/jscript/archive/2007/07/26/scope-chain-of-jscript-functions.aspx在JavaScript中,函数的作用域链是一个很难理解的东西.这是因为,JavaScript中函数的作用域链和其他语言比如C, C++中函数的作用域链相差甚远.本文详细解释了JavaScript中与函数的作用域链相关的知识,理解这些知识可以帮助你在处理闭包的时候避免一些可能出现的问题.在JavaScript中,函数可以让你在一次调用中执行一系列的操作.有多种方式来定义一个函 阅读全文
posted @ 2012-11-26 10:03 【艾伦】 阅读(493) 评论(2) 推荐(3) 编辑
再探Javascript词法作用域
摘要:vartt='aa';functiontest(){alert(tt);vartt='dd';alert(tt);}test();“太简单了!”这是我当时看到这个题目是的第一想法,于是轻率答题竟成我的致命之伤。我的答案是——aa和dd,解析:第一次输出全局变量的结果,然后局部变量tt覆盖全局变量所引用的值,所以第二次输出结果是dd。任何人见我如此作答,都会认为我是在扫盲——想法及其幼稚(我也这么认为)!网易啊,怎么可能会满意于这种答案!正确的答案应该是:undefined和dd为什么第一次alert的结果是undefined呢?要解释得清楚明白需要用到Javas 阅读全文
posted @ 2012-11-24 13:13 【艾伦】 阅读(307) 评论(0) 推荐(2) 编辑
JavaScript词法作用域与调用对象
摘要:作用域 ScopeJavascript 中的函数属于词法作用域,也就是说函数在它被定义时的作用域中运行而不是在被执行时的作用域内运行。这是犀牛书上的说法。但"定义时"和"执行(被调用)时"这两个东西有些人搞不清楚。简单来说,一个函数A在"定义时"就是 function A(){} 这个语句执行的时候就是定义这个函数的时候,而A被调用的时候是 A() 这个语句执行的时候。这两个概念一定要分清楚。那词法作用域(以下称之为"作用域",除非特别指明)到底是什么呢?它是个抽象的概念,说白了它就是一个"范围" 阅读全文
posted @ 2012-11-24 10:51 【艾伦】 阅读(964) 评论(0) 推荐(3) 编辑
JavaScript小特性(7)——面向对象
摘要:面向对象编程(OOP),是目前主流的编程方式,似乎能够OOP的语言,才会被大多数人视为好语言,不能OOP的语言都是“奥特曼”。而JavaScript,则是常常被人误解成“奥特曼”的一种语言,殊不知,JavaScript有着一种更高级的OOP特性。在传统的OOP语言中,Object是Class的一个实例,一个Class可以继承自另一个Class,我们可以理解为“基于类型(Class)”;而JavaScript的语法中并没有Class的概念,Object传承自哪里并不重要,重要的是它能做什么,我们可以理解为“基于原型(Prototype)”。下面就去看看JavaScript的OOP特性吧。1、一切 阅读全文
posted @ 2012-08-29 10:24 【艾伦】 阅读(407) 评论(0) 推荐(3) 编辑
setTimeout(0) 即将退役
摘要:相信所有做前端开发的同学都会经常使用setTimeout(0)来做很多事情,这个一度成为解决了很多前端疑难杂症的法宝。而且大家也知道setTImeout(0)的极限在16ms左右。也许很多人没想到这个是一个很严重的问题,但是在w3c性能小组的专家眼里这是一个非常纠结的设置。那setTimeout和16ms会带来什么问题呢?1.我们都知道,我们在做页面动画的时候大多数都是在用setTImeout来控制每一帧的动画的, 而多个setTimeout的存在会导致很多次CPU中断调度的开销,为了减少这些开销,我们希望同一个统一的CPU中断调度管理调度单元来管理所有动画,于是就出现了requestAnim 阅读全文
posted @ 2012-07-05 08:36 【艾伦】 阅读(1375) 评论(0) 推荐(1) 编辑
JS 对象机制深剖——new 运算符
摘要:其实关于new的讨论,早有众多前辈做了先行。然而作为 JS 对象机制系列的一个重要成员,这一篇不可少,而且按照自己的惯例,我将首先引用语言规范的内容。另外,本篇引用到的规范内容比较多,不过我会做详细的说明,读者朋友可自行选择阅读规范内容。考察 ECMAScript 语言规范中new运算符的定义:The new OperatorThe productionNewExpression : new NewExpressionis evaluated as follows:Evaluate NewExpression.Call GetValue(Result(1)).If Type(Result(2) 阅读全文
posted @ 2012-07-04 07:42 【艾伦】 阅读(4850) 评论(0) 推荐(3) 编辑
精通 JS正则表达式
摘要:正则表达式可以:•测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证•替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字•根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字正则表达式语法一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。创建正则表达式Js代码varre=newRe 阅读全文
posted @ 2012-06-30 14:07 【艾伦】 阅读(82343) 评论(14) 推荐(70) 编辑
JavaScript Memoization:让函数也有记忆功能
摘要:realazy在blog上给出了一个JavaScript Memoization的实现,Memoization就是函数返回值的缓存,比如一个函数参数与返回结果一一对应的hash列表,wiki上其实也有详细解释,我不细说了,只讨论一下具体实现的问题,realazy文中的代码有一些问题,比如直接用参数拼接成的字符串作为查询缓存结果的key,如果参数里包括对象或数组的话,就很难保证唯一的key,还有1楼评论里提到的:[221,3]和[22,13]这样的参数也无法区分。那么来改写一下,首先还是用hash表来存放缓存数据:functionMemoize(fn){ varcache={}; returnf 阅读全文
posted @ 2012-06-30 10:27 【艾伦】 阅读(724) 评论(0) 推荐(1) 编辑
向服务器请求数据的五种技术
摘要:Ajax,在它最基本的层面,是一种与服务器通讯而不重载当前页面的方法,数据可从服务器获得或发送给服务器。有多种不同的方法构造这种通讯通道,每种方法都有自己的优势和限制。 有五种常用技术用于向服务器请求数据: (1)XMLHttpRequest (XHR) (2)动态脚本标签插入 (3)框架 (4)Comet (5)多部分的XHR 在现代高性能JavaScript中使用的三种技术是XHR,动态脚本标签插入和多部分的XHR。使用Comet和iframe(作为数据传输技术)往往是极限情况,不在这里讨论。一、XMLHttpRequest 目前最常用的方法中,XMLHttpRequest(XHR)用来. 阅读全文
posted @ 2012-06-30 10:10 【艾伦】 阅读(15047) 评论(2) 推荐(4) 编辑
正则表达式中的回溯
摘要:在大多数现代正则表达式实现中(包括JavaScript所需的),回溯是匹配过程的基本组成部分。它很大程度上也是正则表达式如此美好和强大的根源。然而,回溯计算代价昂贵,如果你不够小心的话容易失控。虽然回溯是整体性能的唯一因素,理解它的工作原理,以及如何减少使用频率,可能是编写高效正则表达式最重要的关键点。因此后面几节用较长篇幅讨论这个话题。 当一个正则表达式扫描目标字符串时,它从左到右逐个扫描正则表达式的组成部分,在每个位置上测试能不能找到一个匹配。对于每一个量词和分支,都必须决定如何继续进行。如果是一个量词(诸如*,+?,或者{2,}),正则表达式必须决定何时尝试匹配更多的字符;如果遇到分支( 阅读全文
posted @ 2012-06-30 10:05 【艾伦】 阅读(5499) 评论(0) 推荐(1) 编辑
正则表达式工作原理
摘要:粗浅地编写正则表达式是造成性能瓶颈的主要原因,但还有很多可以改进正则表达式效率的地方。两个正则表达式匹配相同的文本并不意味着他们具有同等的速度。 许多因素影响正则表达式的效率,首先,正则表达式适配的文本千差万别,部分匹配时比完全不匹配所用的时间要长。每种浏览器的正则表达式引擎也有不同的内部优化。 为了有效地使用正则表达式,重要的是理解它们的工作原理。下面是一个正则表达式处理的基本步骤: 第一步:编译 当你创建了一个正则表达式对象之后(使用一个正则表达式直接量或者RegExp构造器),浏览器检查你的模板有没有错误,然后将它转换成一个本机代码例程,用于执行匹配工作。如果你将正则表达式赋给一个变量. 阅读全文
posted @ 2012-06-30 10:02 【艾伦】 阅读(5198) 评论(0) 推荐(1) 编辑
闭包与柯里化
摘要:闭包和柯里化都是JavaScript经常用到而且比较高级的技巧,所有的函数式编程语言都支持这两个概念,因此,我们想要充分发挥出JavaScript中的函数式编程特征,就需要深入的了解这两个概念,闭包事实上更是柯里化所不可缺少的基础。一、柯里化的概念 在计算机科学中,柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。这个技术由Christopher Strachey以逻辑学家 Haskell Curry 命名的,尽管它是 Moses Schnfinkel 和 Gottlob Frege 发明的。在直觉上,柯里化声称“ 阅读全文
posted @ 2012-06-30 09:59 【艾伦】 阅读(680) 评论(0) 推荐(2) 编辑
Javascript中currying的实现
摘要:Currying好像是函数式语言都有的一个特性,比如Perl,Python,Javascript。那么到底什么是Currying,我是在学习Closure时无意中接触到这个定义的,觉得很是有趣。先看看Wiki中的定义:Curryingis the technique of transforming afunctionthat takes multipleargumentsin such a way that it can be called as a chain of functions each with a single argument.大概的意思就是说,将拥有多个参数的函数Curryi 阅读全文
posted @ 2012-06-30 09:22 【艾伦】 阅读(2128) 评论(1) 推荐(2) 编辑

上一页 1 ··· 3 4 5 6 7 8 下一页