Oh, prima della pausa pranzo
Allora tu hai:


var getVars={
'foo': function(){ var s=window.location.search.substring(1).split('&'); for(var i in s){this[s[i].substring(0, s[i].indexOf('='))]=unescape( s[i].substring(s[i].indexOf('=')+1) );} return this;}
};
getVars.foo();
alert(getVars.pippo);
alert(getVars.yourVar);

Siccome hai il controllo del tuo ambiente di sviluppo, sai che cosa contiene getVars e sai che le tue query non hanno un parametro foo: se lo avessero, sovrascriverebbe la proprietà funzione. In realtà il danno non ci sarebbe nemmeno se venisse manualmente aggiunto: la tua procedura si ferma, e il db non è invocato (i tuoi script php devono tutti controllare che i dati siano quelli attesi, con i name dei parametri attesi, e se c'è qualcosa di diverso, devono abortire: la vera sicurezza non è mai dal lato client - ingenerare la illusione che possa esserlo è pericolosissimo). Questo senza contare che basterebbe una modifica minimale al codice per ovviare anche a questa situazione:

if(s[i].substring(0, s[i].indexOf('='))=='foo'){continue;};/*no no: io controllo il mio ambiente: perchè stai provando a mettere roba che non ci deve stare... anzi sai che... a questo punto... non ti ci voglio proprio qui e anzi MOLTO BENE che me ne sia accorto che ci hai messo roba di tuo...*/
if(s[i].substring(0, s[i].indexOf('='))=='foo'){location.href='http://www.fbi.gov'; return;};

La idea di mozilla di incapsulare e proporre una versione lambda deriva da questo: loro immaginano una situazione in cui tu non hai nessun controllo - cioè che il tuo script sarebbe caricato su una pagina di terzi di cui nulla sai.
Mozilla non ti spiega nè punto nè poco questo assunto, nè te lo spiegano altri programmatori (anche perchè di solito nemmeno a loro è chiaro il perchè, e quindi come potrebbero dirtelo?), nè ti dice che incapsulare in questo caso significa non accorgersi delle injection: appartiene al non verbalizzato: obscurum per obscurius, il che porta ad assunzioni acritiche e alle perplessità come le tue, giustamente - perchè uno vuole capire e non codificare e basta, e i forum a queste carenze possono ovviare.

Il che serve a capire che, come ti dicevo, si incapsula quando serve e non per principio: se il tuo script è su un ambiente di cui hai controllo, incapsulare a tale scopo è come mandare i Navy Seals in montagna.
Devi prima capire se sei al mare, e poi solo se hai capito questo decidi se inviare i Seals.

Il problema peraltro è che in realtà, giunti su queste soglie del programmatore senza alcun controllo sul suo ambiente di sviluppo e, quindi, con un db potenzialmente esposto a qualsiasi XSS, può capitare di molto peggio - e innanzi a questo peggio incapsulare non ti risolve più nulla.

Incapsula per Ajax: è indispensabile. Sanitizza i dati inviati al DB. Utilizza un token in html e javascript per le tue form. Queste sono le cose che contano. Affidare la sciurezza della tua applicazione ad un incapsulamento sul lato client significa non avere sicurezza, anche perchè l'incapsulamento ti maschera proprio il tentativo di injection, e tu continui a ritenere affidabile un client che ha appena provato a farlo...

E' sulla base di questa serie di considerazioni che ti dico di non preoccuparti troppo di quel che fa Google: avrà i suoi motivi. Tu preoccupati di capire il senso delle cose (che è quello che volevi fare e a cui spero si stia dando un contributo) e poi pensa alla tua applicazione.