docs: function (str, aspect) {
  
  		str = str.replace(/\&/g, "&amp;");
  
  		var first, second, third, forth;
  		if (aspect) {
  			first = aspect.first;
  			second = aspect.second;
  			third = aspect.third;
  			forth = aspect.forth;
  		}
  
  		str = (!!first) ? first(str) : str;
  
  		str = str.replace(/  /ig, ' &nbsp;');
  		str = str.replace(/\t/ig, '&nbsp;&nbsp;&nbsp;&nbsp;\uFEFF'); // 制表符这么写主要是为了满足表现形式和制表符相同（不会换行）
  
  		str = (!!second) ? second(str) : str;
  
  		str = str.replace(/</ig, '&lt;');
  		str = str.replace(/>/ig, '&gt;');
  
  		str = (!!third) ? third(str) : str;
  
  		str = str.replace(/(\r\n|\n|\r)/ig, '<br />');
  
  		str = (!!forth) ? forth(str) : str;
  
  		return str;
  	}