- 博客(14)
- 资源 (4)
- 收藏
- 关注
原创 nodejs异步控制
回调函数nodejs约定将异常作为回调函数的第一个实参传回,如果为null,则表明异步调用没有异常。const fs = require("fs");fs.readFile("file1", function(err, result){ if(err) throw err; console.log(result.toString("utf-8"));});事件发布/订阅nodejs自身提
2016-04-19 08:29:40 552
原创 nodejs的express源码阅读
尾触发与Next除了事件和Promise外,还有一种方法时需要手动调用才能持续执行后续调用,我们将此类方法叫做尾触发,常见的关键字是next. 尾触发目前应用最多的地方是Connect的中间件。function (req, res, next){ //}每个中间件传递请求对象、响应对象和尾触发函数,通过队列形成一个事件流。module.exports = createServer;funct
2016-04-19 08:28:13 632
原创 es6函数的扩展
1.rest参数ES6引入rest参数(形式为“…变量名”),用于获取函数的多余参数,这样就不需要使用arguments对象了。 arguments对象并没有数组的方法,rest参数搭配的变量是一个数组。function add(...values){ let sum = 0; for(let val of values){ sum += val; } return sum
2016-04-17 23:44:47 591
原创 es6的Generator函数
摘自Generator 函数Generator函数是协程在ES6的实现,最大特点就是可以交出函数的执行权(即暂停执行)。整个Generator函数就是一个封装的异步任务,或者说是异步任务的容器。异步操作需要暂停的地方,都用yield语句注明。 Generator函数有多种理解角度。从语法上,首先可以把它理解成,Generator函数是一个状态机,封装了多个内部状态。function* helloW
2016-04-17 17:36:31 547
原创 js继承
当一个函数对象被创建时,Function构造器产生的函数对象会运行类似这样的一段代码this.prototype = {constructor:this};constructor属性没什么用,重要的是prototype对象. 当采用构造器调用模式,即用new去调用一个函数时,函数执行方式会被修改.Function.method("new",function(){ //创建一个新对象,它继承构造
2016-04-15 08:20:29 431
原创 node模块机制
CommonJS模块规范CommonJS对模块的定义十分简单,主要分为模块引用,模块定义和模块标识3个部分.模块引用var math = require("math");模块定义在模块中,上下文提供require()方法来引入外部模块.一个module对象,它代表模块本身,而exports是module的属性var exports = module.exports = {}function add
2016-04-12 00:56:48 474
原创 js的defineProperty方法
function defineGetter(obj, name, getter) { Object.defineProperty(obj, name, { configurable: true, enumerable: true, get: getter });};在express中看到defineProperty的使用,es5可以通过Object.definePr
2016-04-11 23:40:50 7052 1
原创 js创建对象
javascript是基于原型继承的,允许对象继承另一个对象的属性.正确的使用它能减少对象初始化时消耗的时间和内存.引用js中对象通过引用来传递.通过=操作符赋值时它们永远不会被复制.var a = {}, b = {}, c = {};//a,b和c每个都引用一个不同的空对象a = b = c = {};//a,b和c都引用同一个对象1.创建对象1.1对象字面量对象字面量提供了一种非常方便
2016-04-10 20:03:36 434
原创 js高阶函数
在通常的编程语言中,函数的参数只能是基本类型或者对象引用,返回值也只是基本数据类型或对象引用。但在Javascript中函数作为一等公民,既可以当做参数传递,也可以被当做返回值返回。 所谓高阶函数就是可以把函数作为参数,或者是将函数作为返回值的函数。回调函数代码复用是衡量一个应用程序的重要标准之一。通过将变化的业务逻辑抽离封装在回调函数中能够有效的提高代码复用率。 比如ES5中为数组增加的for
2016-04-10 17:51:41 855
原创 js闭包
闭包(Closure)闭包是JavaScript一个非常重要的特性,这意味着当前作用域总是能够访问外部作用域中的变量. 因为函数是JavaScript中唯一拥有自身作用域的结构,因此闭包的创建依赖于函数. 作用域的好处是内部函数可以访问定义它们的外部函数的参数和变量(除了this和arguments).var myObject = { value:0, increment:functio
2016-04-10 17:50:51 310
原创 js函数调用方式
函数对象javascript中函数就是对象.对象是键值对的集合并拥有一个连接到原型对象的隐藏连接. 对象字面量产生的对象连接到Object.prototype.函数对象连接到Function.prototype调用除了声明时定义的形式参数,每个函数还接收两个附加的参数:this和arguments. this在面向对象编程中非常重要,它的值取决于调用的模式.在javascript中一共有4种调用
2016-04-10 17:50:02 568
原创 js原型链
对象javascript中的简单数据类型包括数字,字符串,布尔值(true和false),null值和undefined值.其他所有的值都是对象. 每一个对象都连接到一个原型对象prototype,并且它可以从中继承属性.让我们看一个关于对象的基本例子。一个对象的prototype是以内部的[[Prototype]]属性来引用的。 但是,在示意图里边我们将会使用__<internal-prope
2016-04-10 17:48:59 328
原创 js作用域Scope
作用域Scope在编程语言中,作用域控制着变量和参数的可见性及生命周期. 对于程序员来说这是一项重要的服务,因为它减少了名称冲突,并且提供了自动内存管理.var foo = function(){ var a = 3, b = 5; var bar = function(){ var b = 7, c = 11; //此时 a为3,b为7,c为11 a += b +
2016-04-10 17:45:05 403
原创 当Gerrit的Cubmit类型为cherry pick时的工作方式
Fast Forward Only意味着submit一个检视后,同一个目的分支的其他open状态的检视需要rebase操作. 没有合并提交产生,所有的合并都必须在客户端完成后再上传到Gerrit,在实践中对于检视比较少的项目比较合适. Merge If Necessary这是创建新项目的默认值.当检视不是fast-forwarded类型时,会创建一个合并提交. Cherry-pick在subm
2016-04-02 18:57:57 3122
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人