ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(四)

前面分3篇博文介绍了 Ecmascript 5.1 数组扩展方法ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(一)ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(二)ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(三)今天和大家分享数组中关于归并的2个扩展方法 reduce , reduceRight我们逐一简绍reduce 此扩展函数相比其他方法略繁琐一点.reduce(callbak(previous, current, index, array, [initialValue])[in

ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(三)

前面分2篇博文介绍了 Ecmascript 5.1 数组扩展方法中的迭代方法:ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(一)ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(二)今天和大家分享数组中关于索引的2个扩展方法indexOflastIndexOf依次看下:1. indexOfindexOf(searchItem,[fromIndex])第一参数 searchItem 是查询的目标元素第二参数 fromIndex 是查询的起始位置 (可选参数,为空表示从索引0处开始查找)数组查询按照从左到右的顺序,从 fromIn

ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(二)

接着上一篇的ECMAScript 6 数组扩展方法数组元素迭代方法还剩下 filter , some , every3. filter过滤数组,将数组元素迭代,依次调用回调函数array.filter(callback);实例:我们遍历迭代a数组,然后每个元素对2整除,符合条件的返回.vara=[1,2,3]; varb=a.filter(function(item,index,a){ returnitem%2==0; }); console.log(b);filter 第一个参数是回调函数function(item,index,a)item 是当前迭代元素index 当前迭代元素所在索引a

ECMAScript 5.1 版本下对 javascript 数组元素的扩展方法(一)

2011年发布了 ECMAScript 5.1 ,到现在普及程度也不高.如今马上要 ECMAScript 6 马上要发布标准了,何年何月才能普及到.从2013年 各大浏览器开始支持 ECMAScript 5.1包括:Chrome 24,Firefox 19,IE 10.0,Opera 12,Safari 6 等浏览器及更高版本得到支持.今天介绍ECMAScript 5.1 中数组新增的方法:先推荐一位朋友的博客 IT笔录 ,涉及到开发,系统,运维方方面面,各位攻城狮可以去赏脸拜读一下!操作数组元素的迭代方法:forEach() , map(), filter(), every(), some(

闭包形成环境,使用方法及传递局部作用域时到底是值拷贝还是堆引用

javascript中闭包的作用我们之前专门聊过一次,点击查看闭包的形成环境先从javascript的简史说起:javascript 这门充满缺陷和坑的语言,在各大浏览器厂商的支持下,web大势所趋的形势下发展成一家独大的浏览器宿主语言,非常不容易,有兴趣的可以查阅下它的发展背景,当初创建javascript的作者Brendan Eich 在网景公司高层压力下,10天内写成的这门语言的第一个初版,他自己感觉非常不满意,用他自己的话说是这样的:"与其说我爱Javascript,不如说我恨它。它是C语言和Self语言一夜情的产物。十八世纪英国文学家约翰逊博士说得好:‘它的优秀之处并非原创

修改 mac /etc/sudoers 文件后 - sudo 命令不能用 报错syntax error near line

sudo 命令(substitute user do) 可以授权特定用户或用户组作为 root 或其他用户执行某些命令例如普通用户不能在/usr/local/bin/ 下创建目录,这是我们就可以在 mkdir 命令前加 sudo 来执行,他可以授权给我们root的权限执行此命令.sudo 命令的运行依靠它的配置文件 /etc/sudoers 今天干了一件尴尬的事,就是我把 /etc/sudoers 配置文件修改了下,然后保存,结果发现修改出了错误,导致 sudo 命令无法运行,接着想改回来可就没有那么容易了....因为此配置文件修改需要root权限,而我们的sudo 运行出错.所以尴尬的一幕上

PostgreSQL 函数的使用 - 让数据层帮你解决一部分业务逻辑

快一周没有更新了.今天老聂(他的博客 http://niefengjun.cn/) 终于忍不住了,QQ上提醒了我,上周回了趟老家,耽误了几天.PostgreSQL只有函数,是的,没有我们传说中的存储过程,其实PG里的函数已经包括了它,或者说可以利用函数实现它.前面有2篇关于 PostgreSQL 的文章:mac 下初始 PostgreSQL 数据库PostgreSQL 使用 node-postgres 在 node.js 中的应用函数的组成: 函数头 函数体 所使用语言函数头用来定义函数及变量,函数体主要是函数的实现,函数的语言是指该函数实现的方式,目前内置的有c,plpgsql,sql和in

PostgreSQL 使用 node-postgres 在 node.js 中的应用

之前有一篇介绍PostgreSQL在MAC环境下的初体验 ,今天要和大家分享的是 node.js 应用 + PostgreSQL 做数据存储的demo.node.js 环境使用 PostgreSQL 需要下载编译node-postgresgithub地址:https://github.com/brianc/node-postgres 使用:zhangzhi@moke:npminstall--savepgREADME.md 关于如何使用的api 也比较简单:varpg=require('pg'); varconString="postgres://username:pa

locate 在linux下快速定位文档

linux 下可以使用 locate 和 find 来查找文件,但是 locate 在定位时要比 find 快.他们的区别:locate并不是穿梭于档案文件中查找,而是在数据库查找文件.find 正好相反,他的查找要穿梭于档案文件中.这个数据库中含有本地所有文件信息.Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件.所以 locate 要查询实时数据,需要更新数据库.locate--u使用格式:zhangzhi@moke:~$locate[-ir]keyword-i 不区分大小写-r 后面可以接收正则表达式使用方法:全局查找一个zhangz

PostgreSQL mac 环境下初识篇

PostgreSQL 是以加州大学伯克利分校计算机系开发的 POSTGRES 版本 4.2 为基础的对象关系型数据库管理系统(ORDBMS),简称pgsql,是一个自由的对象-关系数据库服务器,由社区驱动的的对象-关系型 数据库系统,它支持大部分 SQL 标准并且提供了许多其他现代特性,它在灵活的 BSD-风格许可证下发行.越来越多的人用它来取代mysql .已成为开发首选的开源关系型数据库.在mac 环境下,可以使用 brew 来安装, 也可以直接下载app 安装.官网下载地址:http://www.postgresql.org/download/ 选择 mac OS X 版本下载,安装即可

macbook 下 webstorm 高效快键键

webstorm 是一款非常好用的javascript 开发 IDE ,当然使用它是需要商业付费的,可以使用30天.IDE是开发的高效工具,但并不是所有web开发都使用它,萝卜青菜,各有所爱!有的人为了高逼格甚至还在专研Emacs ,还有的在为自己的vim安装插件,这些都阻挡不了webstorm 的发展,去看看这家公司你会发现多少优秀的IDE出自他们手上,这是工匠精神吗?你想提高编程效率,除了有一款高效的IDE ,还要知道如何使用它,或者是如何快键便利的使用它.记住,能用快键键的时候,千万不要用鼠标上去划拉,所以今天整理出一部分,能记住最好,记不住,强迫自己记住!下面的快键键只是针对macbo

README.md 如何规范 - 开源项目中必不可少的文件

我们在项目中常常看到README.md 当然扩展名可能是txt ,rb,md ,甚至 me 都有可能.其实这个小小的静态文件还是有些重要信息可以传递的.这就是你在github上创建一个项目的是,总会提示你要不要生成一个README.md 文件.README 应该是介绍code source 的一个概览.其实这个静态文件是有约定成俗的规范.你的项目介绍你的代码实现了什么功能?该如何使用? (系统环境参数,部署要素)代码组织架构是什么样的?版本更新重要摘要如果你的README包括上面的内容,那么当使用者拿到代码,打开README后,基本就知道该如何下手了.如下 README.md :DEMO ##

pandoc markdown 生成pdf文档

今天和大家分享一个工具 pandocgithub地址:https://github.com/jgm/pandoc 它被称作是一款神器为什么这样说:标记语言经过一路发展,貌似从最初的复杂架构中渐渐的又回归到了简洁.不得不提的是 2004年发展起来的 markdown 语法,简洁清爽,非常受人欢迎,尤其是不会操作word的用户,不会书写html的用户,简直就是福音.但是问题来了, markdown 语法就算非常简洁,我潇潇洒洒写了5万字的小说,最后这个 md 文件如何变成 word文档(或许是受markdown 限制,打印问题,或者出版社要求) 或者如何变成一个pdf文档.......(关于mar

lodash 超越 underscor 全兼容并且性能更突出

underscore 以14000多的star ,对于 7000多 star 的 lodash虽然是压倒性优势,但是你不得不承认 lodash 的增长速度以及他的性能优化.为什么要把这2个牵扯在一起,因为他们有着千丝万缕的关系.lodash 原本是 underscore 的一个fork ,对于underscore 的每一个api的增加,移除,修改等.lodash 都会迅速做出反应,所以理论上我们可以0成本直接用 lodash 来替换 underscore.因为lodash 的内部对api做了惰性求值?(具体含义还是似懂非懂,有待进一步学习)所以他的api性能高出 underscore 一大截,

when 让你跳出异步回调噩梦 node.js下promise/A规范的使用

其实关于promise 的博客,前端时间专门写了一篇关于 promise 规范的文章,promise规范 让 javascript 中的异步调用更加人性化.简单回忆下:promise/A规范定义的“Deferred/Promise”模型其实是实现了“发布/订阅”模型.通过Deferred对象发布事件,包括下面2种事件完成 --> resolve事件,失败 --> reject事件,通过Promise对象进行对应完成或失败的订阅类似于任务状态转变时事件被触发.将会对应的执行事件绑定函数.每个Promise任务都有三种状态:默认(pending)、完成(fulfilled)、失败(re

node-config 模块根据 ENV 环境变量不同加载响应的配置文件

上一篇博文和大家分享了ENV定制开发,测试,发布环境变量.定制了以后如何来用,今天这篇就是要介绍如何使用自定义的不同环境变量.大概有些同学会有疑问.为什么各种环境不直接配成一致的.如果可以这么做的话,再好不过的.什么时候可能需要不同的配置.如果你想在开发环境下打印出log ,但是在正式运行环境不想打印log.你想在开发环境加载原 javascript 文件, 在正式运行环境下压缩javascript 文件.或者你想在开发环境加载一套 config 配置,在正式运行环境加载另外一套 config 配置.等等......一切你需要定制化的时候. 3. 我需要一个普通的json配置文件即可,为何要用

ENV定制开发,测试,发布环境变量

env 命令可以显示Linux系统当前用户环境变量,当然mac下也是可以的.注意是当前用户的环境变量.查看ENV环境变量:zhangzhi@moke:~$ENV TERM_PROGRAM=iTerm.app ANDROID_HOME=/Users/zhangzhi/Library/Android/sdk SHELL=/bin/bash TERM=xterm-256color CLICOLOR=1 TMPDIR=/var/folders/b9/x5dylknd4x735wwy54f3g41h0000gn/T/ GRADLE_HOME=/usr/local/gradle-2.2.1 Apple_P

避免uncaughtException错误引起node.js进程崩溃

uncaughtException 未捕获的异常, 当node.js 遇到这个错误,整个进程直接崩溃.或许这俩个人上辈子一定是一对冤家.或许这俩个人经历了前世500次的回眸才换来了今生的相遇,只可惜在错误的时间,错误的地点,做了错误的事!什么是uncaughtExceptionuncaughtException 是一种未捕获的异常,它是node.js 进程上的一个事件,直接挂在 process 上.什么时候会遇到uncaughtException1.当你的程序出错了2.这个错误还没有被 try ... catch 住以上2个条件同时发生时, 说明当前的一个异常会一直冒泡到事件循环为止.然后打印

node-cache 模块 node.js 轻量级缓存管理使用及源码分析

随着前端越来越重,已经不是当年的一个页面配几个第三方js库实现一些花俏的效果,而是出现了各种各样的框架解决方案.当我们项目实现前后端分离时,甚至一些逻辑处理也会放到前端来处理.所以随随便便打开一个页面上百k应该也是正常,甚至更大的页面在考验的前端.但是伴随成长的后端,尤其数存储方面貌似发展缓慢,总有跟不上的赶脚!想当年我们使用关系型数据库,当达到一个瓶颈时,解决起来是不计后果的,读写分离,拆表拆库,做service中间件,然后给中间件负载均衡等等来减轻前端并发造成的后端数据压力.如今的mongodb 做一个分布式貌似轻轻松松, redis 做一层缓存让你有飞一样的感觉.我们终于谈到了缓存.缓存

forever node.js web应用中不可或缺的伟大模块

javascript 一统江湖的势头越来越猛,越来越重的前端,不得不实施前后端分离,angular.js 成功把前端javascript抽象成了一个复杂的MVC框架,注意,它是一个框架,可不是普普通通的插件,或者工具包.另一位兄弟则是跳出浏览器宿主的限制,活跃在了服务器端,大名鼎鼎的 node.js还有一位齐头并进的好哥们 mongodb ,它不仅让你使用熟悉的javascript范围数据库,而且还自己实现了javascript引擎.可能创建 javascript 语言的大牛,看到今天js的发展事态,想必脊梁骨也是阵阵发凉.我们好像扯远了,开题先痛痛快快意淫一把怎能善罢甘休,O(∩_∩)O~由

angular.js 国际化模块 angular-translate 简单方便快捷翻译中英文等多语言环境

很多web服务面对的不仅仅是当地用户,多语言环境不仅能提升逼格,更重要是一种用户体验.angular.js 作为前后端拆分的解决方案之一,当然离不开前端框架处理国际化的问题,angular.js 官方出了一个模块 angular-translate 来解决多语言国际化问题.我们前端采用 bower 包管理工具来管理依赖,点击链接查看bower 使用方法,这里不再详细说明.上面列出的3个模块我们都要用到,一会详细说明:今天和大家分享的内容目录:使用angular-translate 模块的前期准备工作创建过滤器做html页面内容的国际化创建服务做javascript 脚本里的内容国际化使用 an

前端包管理器bower的使用

随着前端项目越来越复杂,随便引入几个第三方javascript脚本库貌似已经习以为常,但是随着越来越多的包被引入,开发人员维护起来也是一件相当头疼的事,比如第三方库的版本更新,安装,卸载等.twitter推出了一个前端包管理器 bower 帮我们解决了这些头疼的事情.bower 完全借鉴了npm构思和实现原理,所以后面你会看到它的使用几乎和npm是一模一样.当然,bower 是运行在node.js 基础上,所以你的当前环境确保已经安装 node.js .bower 的基础功能是什么?1.注册模块每个包需要确定一个唯一的 ID 使得搜索和下载的时候能够正确匹配2.文件存储把文件存储在一个有效的网

angular.js 中的作用域 数据模型 控制器 之 基础篇

一些零散的点,如果读的时候自己能串起来就更好了.1.angular.js 作为后起之秀的前端mvc框架,他于传统的前端框架都不同,我们再也不需要在html中嵌入脚本来操作对象了.它抽象出了数据模型,控制器及视图.成功解耦了应用逻辑,数据模型,视图.2.它的视图也不是后台统一替换后渲染页面,而是视图被动态实时替换.视图上可以通过指定的 angular.js 指令来绑定模型数据.模型数据的变化又会直接影响视图的变化.3.控制器就像一座桥梁,负责连接模型和视图, 模型里包括数据和与数据进行交互的方法.视图只负责把模型数据的映射显示给用户.4.angular.js 会记录数据模型中的数据在任意时间点的

搭建阿里云环境 - 阿里云 centOS 如何安装 node.js

阿里云在国内算得上是非常好的VPS了,我的博客从之前的三天打鱼两天晒网也逐渐走入正轨,购买阿里云请点击这里查看配置(没错,这就是个广告)正好在筹划另外一个站,重新买了另外一个阿里云,所以把搭环境的一些东西和大家分享.本篇分享如何在阿里云 centOS 环境搭建 node.js上面是新vps的配置.第一步:在阿里云管理控制台把服务器启动起来.第二步:ssh 登录服务器 ssh root@你的公网IP第三步:yum 首先更新一下yum-yupdate第四步:centOS 系统下编译源代码的一些开发工具,我们一起安装了.yum-ygroupinstall"DevelopmentTools&

angular.js 下使用 $q 创建一个promise 链式调用

angular.js 下使用$q 创建一个 promose 链式调用.我们在前几天分享了一篇,关于javascript中 promose 规范的博客 (点击查看)现在很多很多的开源javascript库 实现了 promise 规范大名鼎鼎的npm 包 Qgithub地址:https://github.com/kriskowal/q 相仿的在 angular.js 下 $q 是一个小型轻量级的 promise 实现.作者据说是$q是从Kris Kowal的Q中获得灵感从而产生的一个promise/deffered实现我们如何使用$q 定义一个 promise . vargetPersonLis

node.js 和 nginx 配合实现 gzip 压缩,让网站浏览更顺畅

node.js 开发的站点,如果你也是用了nginx实现反向代理.那么在服务端可以轻松实现 gzip 压缩,让站点浏览更顺畅.前提条件: node.js + nginx 反向代理node.js 需要做的工作:express 4.0以下版本:app.use(express.compress());//主要是这句 app.use(express.json()); app.use(express.urlencoded()); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookie

关于一介布衣博客适配pc端,移动端浏览器的一些细节分享

目前还处于人口红利期的移动互联网发展的大红大紫,不断侵蚀传统pc份额,所以做一个全终端自动适配的站点已经成了主流.我的博客也是因为之前对于移动浏览器兼容太差,有些朋友提意见说UI体验也不太好,百度m站的UI亮瞎双眼......所以决定换换UI,因为页面结构大变,已经做好了被搜索引擎惩罚的准备.但是移动端考虑到网络环境,抛开wifi不谈,4G普及率不高,3G应该目前移动端网名主流实用的网络制式,2.5G和2G的用户就悲剧了,站点再优化貌似对这部分人来说加载几十K,几百K甚至上几M都是 wait , wait , wait ,loading....所以3G用户在浏览加载过程中,能节省几百K,加载速

博客准备换套UI

过了一个清明节也没有闲下来,今天新的敏捷开发周期已经迭代开始了,今天晚上想换下博客的UI,明天开始更新博客,赶紧干活去了,祝各位好心情.UI 线下已经搞定,还在细化局部.2015.4.9 中午12点更新!此套UI将自动适应大部分设备,当然我没有全部测试,手机上体验还是不错的.到目前为止,一共换过4套UI每次换UI其实是有一定风险的,对于seo来说,最好一直用一套UI ,所以这段时间我要留意一下所有引擎收录数量及索引量.如果有一天搜索引擎里搜不到我的博客,也许就是被"拔毛了"但是按理说我只是html结构变化,一直都是勤勤恳恳的写内容,应该不会被搜索引擎拔毛.不过影响肯定是有的

分享一个关于redis 的orm框架 node-ron 使用

今天好累....下班去健身房跑步运动,看着这一身肥肉,希望未来的几个月内能有一点改变,健康最重要,大家要多注意身体.开始说正题,成熟的orm框架大部分来自关系型数据库.KV数据库的orm还是比较少的,但是增速很快,支持mongodb的也陆续出来,但是如果你想找一款 redis 的orm真的少的可怜.github地址:https://github.com/wdavidw/node-ron用的人还是不多,作者官网以及测试用例用coffee script 做demo ,实在不感冒.所以我在自己把每个api 测试一把,回头奉上,所以今天的博客注定又是不完整的,现在开始写,争取做一个完整示例来说比较好.

回到顶部