在connect.js的源码中,用到了一个工具函数包,utils-merge,做用很简单,就是合并属性从一个对象到另外一个对象中,实现代码很简单。git
/** * Merge object b with object a. * * var a = { foo: 'bar' } * , b = { bar: 'baz' }; * * merge(a, b); * // => { foo: 'bar', bar: 'baz' } * * @param {Object} a * @param {Object} b * @return {Object} * @api public */ exports = module.exports = function(a, b){ if (a && b) { for (var key in b) { a[key] = b[key]; } } return a; };
这是一个js浅拷贝,代码很简单,在connect.js源码中,能够看到使用该函数后,代码块更加的独立分离,逻辑清晰。在程序设计中,能够学习该思想。下边根据本身的学习体会,写一个小的练习。github
// 定义一个函数对象 var func = function() { func.exec() }; var merge = function(a,b) { if(a && b) { for(var key in b) { a[key] = b[key]; } } } merge(func,proto); var proto = {}; proto.exec = function() { var data = "hello world"; console.log(data); }
这种分离思想,有种委托的概念。将要执行的函数,在另外一个函数中进行封装定义,而后再定一个函数对象做为代理,去执行函数。api