- 浏览: 3045775 次
- 性别:
- 来自: 海外
文章分类
- 全部博客 (430)
- Programming Languages (23)
- Compiler (20)
- Virtual Machine (57)
- Garbage Collection (4)
- HotSpot VM (26)
- Mono (2)
- SSCLI Rotor (1)
- Harmony (0)
- DLR (19)
- Ruby (28)
- C# (38)
- F# (3)
- Haskell (0)
- Scheme (1)
- Regular Expression (5)
- Python (4)
- ECMAScript (2)
- JavaScript (18)
- ActionScript (7)
- Squirrel (2)
- C (6)
- C++ (10)
- D (2)
- .NET (13)
- Java (86)
- Scala (1)
- Groovy (3)
- Optimization (6)
- Data Structure and Algorithm (3)
- Books (4)
- WPF (1)
- Game Engines (7)
- 吉里吉里 (12)
- UML (1)
- Reverse Engineering (11)
- NSIS (4)
- Utilities (3)
- Design Patterns (1)
- Visual Studio (9)
- Windows 7 (3)
- x86 Assembler (1)
- Android (2)
- School Assignment / Test (6)
- Anti-virus (1)
- REST (1)
- Profiling (1)
- misc (39)
- NetOA (12)
- rant (6)
- anime (5)
- Links (12)
- CLR (7)
- GC (1)
- OpenJDK (2)
- JVM (4)
- KVM (0)
- Rhino (1)
- LINQ (2)
- JScript (0)
- Nashorn (0)
- Dalvik (1)
- DTrace (0)
- LLVM (0)
- MSIL (0)
最新评论
-
mldxs:
虽然很多还是看不懂,写的很好!
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩 -
HanyuKing:
Java的多维数组 -
funnyone:
Java 8的default method与method resolution -
ljs_nogard:
Xamarin workbook - .Net Core 中不 ...
LINQ的恶搞…… -
txm119161336:
allocatestlye1 顺序为 // Fields o ...
最近做的两次Java/JVM分享的概要
Douglas Crockford的JavaScript专题站
光是这个专题站里的链接就够看好段时间了.很多都很有趣,其中我比较有爱的是这篇:
Curried JavaScript functions
里面有些有趣的例子.例如这个:
如果是有读过我前面几篇blog文的人,或许会见到我经常用这个例子:
其实做的就是currying,把本来应该一般常识是接受两个参数(lhs和rhs)的add变成只接受一个(rhs)的并将函数(这里是指那个匿名函数)返回.不过具体"形式"与currying不一样.前面引用的那段代码就是真正写成currying形式的版本.
那篇文章也给出了泛用版的curry函数:
相当有趣.详细还是到原文去看吧~
光是这个专题站里的链接就够看好段时间了.很多都很有趣,其中我比较有爱的是这篇:
Curried JavaScript functions
里面有些有趣的例子.例如这个:
引用
function add(a, b) { if (arguments.length < 1) { return add; } else if (arguments.length < 2) { return function(c) { return a + c } } else { return a + b; } }
如果是有读过我前面几篇blog文的人,或许会见到我经常用这个例子:
function add( lhs ) { return function ( rhs ) { return lhs + rhs } }
其实做的就是currying,把本来应该一般常识是接受两个参数(lhs和rhs)的add变成只接受一个(rhs)的并将函数(这里是指那个匿名函数)返回.不过具体"形式"与currying不一样.前面引用的那段代码就是真正写成currying形式的版本.
那篇文章也给出了泛用版的curry函数:
引用
function curry(func,args,space) { var n = func.length - args.length; //arguments still to come var sa = Array.prototype.slice.apply(args); // saved accumulator array function accumulator(moreArgs,sa,n) { var saPrev = sa.slice(0); // to reset var nPrev = n; // to reset for(var i=0;i<moreArgs.length;i++,n--) { sa[sa.length] = moreArgs[i]; } if ((n-moreArgs.length)<=0) { var res = func.apply(space,sa); // reset vars, so curried function can be applied to new params. sa = saPrev; n = nPrev; return res; } else { return function (){ // arguments are params, so closure bussiness is avoided. return accumulator(arguments,sa.slice(0),n); } } } return accumulator([],sa,n); }
function add (a,b,c){ if (arguments.length < this.add.length) { return curry(this.add,arguments,this); } return a+b+c; } alert(add()(1,2,4)); // 7 alert(add(1)(2)(5)); // 8 alert(add(1)()(2)()(6)); // 9 alert(add(1,2,7,8)); // 10
相当有趣.详细还是到原文去看吧~
评论
1 楼
RednaxelaFX
2007-11-17
JavaScript Source
这名字真够响亮的。一个据说拥有大量可cut-and-paste的JavaScript代码的网站……留待观察
这名字真够响亮的。一个据说拥有大量可cut-and-paste的JavaScript代码的网站……留待观察
发表评论
-
Function.prototype.bind
2013-09-24 18:07 0polyfill http://stackoverflow. ... -
Nashorn各种笔记
2013-07-15 17:03 0http://bits.netbeans.org/netbea ... -
JavaScript global properties are bound by name, not by value
2013-06-04 14:42 0function a() { console.log('a1' ... -
PICs and prototypes
2013-05-30 13:10 0In a lot of the implementations ... -
Nashorn notes
2013-05-28 10:44 0Nashorn NodeVisitor: the same a ... -
Building Blocks of a JavaScript Engine
2013-05-23 00:49 0sketches of my new book "B ... -
读《JavaScript语言精髓与编程实践(第二版)》
2013-05-21 00:32 02008年逛书店的时候偶 ... -
V8与c1visualizer
2011-08-21 21:00 0Subject: [v8-dev] Improved c1vi ... -
Rhino的JavaScript与Java的整合
2011-05-05 14:40 0http://www.mozilla.org/rhino/Sc ... -
this = null的杯具
2011-03-09 17:04 0this不允许赋值? FireFox表示吐槽 Chrome却欣 ... -
简单替换URL中查询字符串的参数值的代码
2010-04-11 17:49 6179刚有个需求是要把URL中query部分的一个指定参数的值替换为 ... -
JägerMonkey的组件介绍
2010-03-16 13:00 0David Mandelin JägerMonkey & ... -
眼见为实——V8的隐藏类与inline cache的例子
2010-03-02 13:42 0src/globals.h // State for inli ... -
JavaScript一些难以优化的地方
2010-03-02 08:54 0arguments with eval -
JägerMonkey与Carakan动态更新
2010-02-28 22:08 3033今天读了几篇与JavaScript引擎相关的帖。三篇关于Moz ... -
Opera的JS引擎,Carakan
2009-12-03 01:47 0Wikipedia 引用Presto is a layout ... -
with的陷阱
2009-11-21 18:41 0让eval()全局作用域执行的方法深入研究 用with(win ... -
虚拟机随谈(一):解释器,树遍历解释器,基于栈与基于寄存器,大杂烩
2009-10-17 02:52 132716(Disclaimer:如果需要转 ... -
再谈Google V8和Webkit Nitro
2009-08-21 18:11 0JavaScriptCore SquirrelFish -&g ... -
把列表里连续的数字合并到连续范围里
2009-06-07 20:46 3380论文写得快疯了嗯。上来换口气。 刚才看到问答频道的一个问题, ...
相关推荐
生成JavaScript文章目录导航主要涉及以下几个关键知识点: 1. **HTML结构**:首先,HTML文档中需要有合适的标题元素(`<h1>`到`<h6>`),这些元素将被JavaScript解析并用于构建目录。例如,一级标题使用`<h1>`,二...
文章开头提到了几个简单的JavaScript技巧: - **163首页显示效果**:这可能是指在163首页上使用的某些JavaScript效果,如弹窗、滚动文字等。 - **图片展示**:虽然没有具体说明如何实现,但通常指的是使用...
在“QT的几个文章”这个主题中,我们可以深入探讨以下几个关于QT的知识点: 1. **Qt库的核心概念**: - **信号与槽机制**:这是Qt最核心的设计模式,允许对象间通信而无需知道彼此。当一个对象的信号被触发时,与...
的模板文件或使用 hook(钩子)机制,在论坛的文章内容中添加JavaScript代码,当检测到链接被点击时,触发新窗口的打开。 2. **配置选项**:安装插件后,管理员通常可以在后台设置是否启用此功能,以及新窗口的...
- 王德封-逐浪 - CSDN博客.url":这个链接指向了一个CSDN博客文章,详细阐述了jQuery中几种常见的DOM就绪事件处理函数的区别,这对于理解如何在页面加载完成后正确执行JavaScript代码至关重要。 5. "牛股大转盘 好股...
AJAX 请求分为几个步骤:创建对象、打开连接、设置请求方法和参数、发送请求、处理响应。XML 不再是 AJAX 数据格式的唯一选择,现在更常见的是 JSON,因为其更简洁且易于解析。 **JavaScript & AJAX 应用** 1. **...
一个简单的树节点通常包含以下几个属性:`value`(节点值)、`children`(子节点数组)和`parent`(父节点)。例如: ```javascript function TreeNode(value) { this.value = value; this.children = []; this....
8.6 一个链接打开两个地址 8.7 为链接提供下拉菜单 8.8 按钮链接 8.9 弹出鼠标所指的链接地址 8.10 链接的注释 8.11 为超链接同时绑定单击和双击事件 8.12 带链接的滚动字幕 8.13 会跳舞的链接 8.14 检测站点的连接...
在文件“文章管理”中,可能包含了以下几个部分: 1. HTML/CSS文件:定义了用户界面的结构和样式,包括文章列表、添加/编辑表单等。 2. JavaScript文件:包含了AJAX请求的逻辑,以及可能的前端验证和用户交互处理。 ...
JavaScript作为一种强大的客户端脚本语言,在过去几十年里经历了起伏不定的发展历程。随着技术的进步和互联网基础设施的改善,JavaScript已经成为现代Web开发不可或缺的一部分。通过O'Reilly出版社提供的丰富资源和...
与数组不同,Map的键是有序的,并且提供了几个方便的方法,如set(key, value)用于设置键值对,get(key)用于获取键对应的值,delete(key)用于删除键值对,size属性用于获取Map中键值对的数量。`map.js` 文件可能会...
对于动易文章系统而言,其源码可能包括以下几个主要组成部分: 1. **前端展示**:这部分源码主要负责用户在浏览器上看到的网页设计和交互效果,通常使用HTML、CSS和JavaScript编写。开发者可以通过修改这部分代码来...
在正常情况下,一个PHP文章管理平台的源码压缩包可能会包含以下几类文件: 1. **源代码文件**:包括`.php`后缀的文件,这些文件包含了平台的主要逻辑和功能实现。 2. **数据库配置**:可能有一个`.ini`或`.sql`文件...
8.6 一个链接打开两个地址 8.7 为链接提供下拉菜单 8.8 按钮链接 8.9 弹出鼠标所指的链接地址 8.10 链接的注释 8.11 为超链接同时绑定单击和双击事件 8.12 带链接的滚动字幕 8.13 会跳舞的链接 8.14 检测站点的连接...
在本系统中,通常会创建以下几个关键表: 1. `articles`:存储文章的基本信息,如文章ID、标题、内容、作者、发布时间等。 2. `categories`:用于分类管理,包含类别ID和类别名称。 3. `tags`:用于文章标签,每个...
Web技术之家文章简介:HTML网页超链接标记学习教程 链接标记的属性 链接是网页页面中最重要的元素之一,是一个网站的灵魂。一个网站是由多个页面组成的,页面之间依靠链接确定相互的导航关系。每一个网页都有...
通过分析这个3D玫瑰项目,我们可以学习到以下几个关键知识点: 1. **JavaScript基础**:理解变量、数据类型、函数、对象等基本概念,这是编写任何JavaScript代码的基础。 2. **3D图形编程**:了解如何在2D平面上...
我们将主要涉及到以下几个核心知识点: 1. **Servlet与JSP**:作为JavaWeb开发的基础,Servlet用于处理HTTP请求,而JSP则用于生成动态网页内容。在这个项目中,Servlet通常用于处理用户提交的表单数据,如登录验证...
系统的核心组件包括以下几个关键文件: 1. **post.php**:这是用于创建和编辑文章的后台接口。它可能包含文章的添加、修改、预览和发布等功能,允许管理员对文章内容进行详尽的控制。 2. **global.php**:全局配置...