ugrás a tartalomhoz

"switch case" vs "this"

Karvaly84 · 2011. Ápr. 17. (V), 02.03
Hello guruk!

Egy olyan apró problémám lenne, hogy JavaScript-ben csináltam egy class-t és ha az egyik metódusában használom a this kulcsszót egy switch case ágon belül akkor olyan mintha nem találná a this-t.
  1. /** 
  2.  * A fent említett class problémás metódusa 
  3.  */  
  4. send : function send(){  
  5.     var method = this.method.toUpperCase(),  
  6.         client = this.client,   
  7.         async  = (this.async) ? true : false,  
  8.         query  = (typeof this.query === 'object') ? http.query(this.query)  
  9.                : (typeof this.query === 'string') ? this.query : null;  
  10.     switch (method) {  
  11.         case 'GET':  
  12.             // Az alábbi sorban a this.url nem elérhető pedig be van állítva.  
  13.             var url = this.url + (query) ? '?' + query : '';  
  14.             client.open(method, url, async); client.send(null);  
  15.         break;  
  16.         case 'POST':  
  17.             var url = this.url;  
  18.             client.setRequestHeader('Content-type'this.contentType);  
  19.             client.open(method, url, async); client.send(query);  
  20.         break;  
  21.     }  
  22. }  
Ha a switch-en kívűl kérem le a this.url-t akkor vissza adja. Valaki röviden elmondaná mért van ez így? Csak ha nem tartok fel senkit. :)
 
1

Másfajta ellenőrzés

Poetro · 2011. Ápr. 17. (V), 07.15
Nem tudom, miért így írtad fel, szerintem a következő kicsit szebb lenne:
  1. var url = (this.url || query) ? '?' + query : '';  
De persze, lehet nem ezt akartad felírni, hanem azt hogy:
  1. var url = this.url + (query ? '?' + query : '');  
Mindenesetre figyelni kell, mert a ? : operátor precedenciája kisebb mint a +-é, ezért később hajtódik végre. Azaz a te példádban előbb lefut a this.url + (query), majd ha attól függően, hogy ez truthy, fut le a sor további része. Mindenképpen érdemes zárójelezni, ha nem tiszta számodra az operátorok sorrendje, vagy ha előfordulhat, hogy mást jelent a kifejezés máshogy zárójelezve.
2

köszi szépen

Karvaly84 · 2011. Ápr. 17. (V), 07.45
Ez nekem is eszembe juthatott volna, hogy ez a probléma, de nem jutott :D