If these aren't meant to be called directly, why are they exposed on the prototype? I'd abstract the loading logic completely, so that link and script used the same parameterized path:


```js
function loader( opts ) {
  var node, prop;

  node = document.createElement( opts.node );

  for ( prop in opts.attrs ) {
    node[ prop ] = opts.attrs[ prop ];
  }

  node.onload = function() {
    opts.handler( file );
    node.parentNode.removeChild( node );
  };

  document.head.appendChild( node );
}

LazyLoader.prototype.load = function( files, callback ) {
  ...

  var type = ( /(?:\.js|\.css)$/.exec( file ) || [""] )[0].slice(1);

  if ( type !== "" ) {
    loader({
      file: file,
      node: ({ js: "script", css: "link" })[ type ], 
      attrs: type === "js" ? {
          src: file
        } : {
          href: file,
          type: "text/css",
          rel: "stylesheet"
        }
      }, 
      handler: callback || function() {}
    });
  }
};

```