src/sap.ui.core/src/sap/ui/core/Renderer.js
function createExtendedRenderer(sName, oRendererInfo) {

		assert(this != null, 'BaseRenderer must be a non-null object');
		assert(typeof sName === 'string' && sName, 'Renderer.extend must be called with a non-empty name for the new renderer');
		assert(oRendererInfo == null ||
			(isPlainObject(oRendererInfo)
			 && Object.keys(oRendererInfo).every(function(key) { return oRendererInfo[key] !== undefined; })),
			'oRendererInfo can be omitted or must be a plain object without any undefined property values');

		var oChildRenderer = Object.create(this);
		// subclasses should expose the modern signature variant only
		oChildRenderer.extend = createExtendedRenderer;
		jQuery.extend(oChildRenderer, oRendererInfo);

		// expose the renderer globally
		ObjectPath.set(sName, oChildRenderer);

		return oChildRenderer;
	}
function createExtendedRenderer(sName, oRendererInfo) {

		assert(this != null, 'BaseRenderer must be a non-null object');
		assert(typeof sName === 'string' && sName, 'Renderer.extend must be called with a non-empty name for the new renderer');
		assert(oRendererInfo == null ||
			(isPlainObject(oRendererInfo)
			 && Object.keys(oRendererInfo).every(function(key) { return oRendererInfo[key] !== undefined; })),
			'oRendererInfo can be omitted or must be a plain object without any undefined property values');

		var oChildRenderer = Object.create(this);
		// subclasses should expose the modern signature variant only
		oChildRenderer.extend = createExtendedRenderer;
		jQuery.extend(oChildRenderer, oRendererInfo);

		// expose the renderer globally
		ObjectPath.set(sName, oChildRenderer);

		return oChildRenderer;
	}
function createExtendedRenderer ( sName , oRendererInfo ) { assert ( this != null , 'BaseRenderer must be a non-null object' ) ; assert ( typeof sName === 'string' && sName , 'Renderer.extend must be called with a non-empty name for the new renderer' ) ; assert ( oRendererInfo == null || ( isPlainObject ( oRendererInfo ) && Object . keys ( oRendererInfo ) . every ( function ( key ) { return oRendererInfo [ key ] !== undefined ; } ) ) , 'oRendererInfo can be omitted or must be a plain object without any undefined property values' ) ; var oChildRenderer = Object . create ( this ) ; // subclasses should expose the modern signature variant only oChildRenderer . extend = createExtendedRenderer ; jQuery . extend ( oChildRenderer , oRendererInfo ) ; // expose the renderer globally ObjectPath . set ( sName , oChildRenderer ) ; return oChildRenderer ; }
Helper to create a new renderer by extending an existing one.

@this {sap.ui.core.Renderer} The base renderer to extend
@param {string} sName Global name of the new renderer
@param {object} oRendererInfo Methods and static properties of the new renderer
@returns {object} New static renderer class
@private
Helper to create a new renderer by extending an existing one .