code: function _call(cbo, argArrayExtra, insertBefore) {
  	var func = (typeof cbo[1] == "string") ? cbo[0][cbo[1]] : cbo[1];
  
  	if (argArrayExtra) {
  		func.apply(cbo[0], cbo[2]?(insertBefore?argArrayExtra.concat(cbo[2]):cbo[2].concat(argArrayExtra)):argArrayExtra );
  	} else {
  		return cbo[2] ? func.apply(cbo[0], cbo[2]) : func.apply(cbo[0]);
  	}
  }
docs: @module cbo
  
  @description
  
  Define callback object, and provide some basic tool funtions.
  
  # Contents #
  
  1. Definition
  * [Callback object					](#defineCallbackObject)
  
  2. Call tool
  * [.call()							]{@link module:cbo~call}
  
  3. Build tool
  * [.combine()						]{@link module:cbo~combine}
  
  * [.toCallback()					]{@link module:cbo~toCallback}
  
  <a name='defineCallbackObject'></a>
  
  ## Definition ##
  ### Callback object ###
  A callback object is an array object defined as :
  > a. `[ thisObj, methodName, argArray ]`
  > b. `[ thisObj, method, argArray ]`
  > c. `[ null, method, argArray ]`
  
  @property  {object} thisObj - The this objecct
  @property  {string} methodName - A function name of `thisObj`
  @property  {function} method - A function
  @property  {Array} [argArray] - An `arguments` array for calling the method
  
  
  @example
  var cbo= require("cbo");
  
  cbo.call(...);
  
   
  Call a cbo
  @function call
  
  @param {cbo} cbo - A cbo object
  @param {Array} [argArrayExtra] - Extra arguments array
  @param {bool} [insertBefore] - Flag to insert `argArrayExtra` before original `argArray` of `cbo`
  
  @return The value returned by the method of `cbo`