Pytanie jest takie: jeżeli zadeklarowałem funkcję String, to dlaczego on krzyczy, że String.method is not a function? Tak w ogóle ten kod ma zamieniać znaki encji na te, które są w tabeli entity. Ponadto jest to książkowy przykład definicji modułu - to tak jakby się ktoś dziwił składni. Oczywiście zauważyłem, że już dzisiaj zacząłem w innym wątki podobny problem, ale tym razem kontekst jest trochę inny, bo tamto dotyczyło rekurencji.
<script type="text/javascript">
function String(){};
String.method('metoda',function(){
var entity = {
quot:'"',
lt:'<',
gt:'>'
};
return function(){
return this.replace( /&([^&;]+);/g,
function(a,b){
var r=entity[b];
return typeof r==='string' ? r:a;}
);
};
}());
document.write('<">'.metoda());
</script>