beh, perché l'hai messo come prototype, che rappresenta in sostanza il metodo pubblico, quindi devi instanziare l'oggetto del tipo JSB (o $ che sono la stessa cosa).
dovresti fare:
codice:
(function(){
var
window = this,
JSB = window.JSB = window.$ = function( selector, context ) {
return new JSB.init( selector, context );
},
quickExpr = /^[^<]*(<(.|\s)+> )[^>]*$|^#([\w-]+)$/;
JSB = JSB.prototype =
{
init: function (selector, context){
if ( typeof selector === "string" ) {
var match = quickExpr.exec( selector );
}
return this;
}
}
JSB.init.prototype = JSB;
window.$.test = function (){alert('test');}
})();
In questo modo è statico, ovvero non richiede l'instanziazione per essere chiamato. Quello che perde rispetto un metodo pubblico è che non puoi chiamare il this al suo interno perché il contesto della funzione deve essere statico.