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

相關文章
相關標籤/搜索