js工具函数合并对象属性

在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

相关文章
相关标签/搜索