"switch case" vs "this"
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.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. :)
■ 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.
- /**
- * A fent említett class problémás metódusa
- */
- send : function send(){
- var method = this.method.toUpperCase(),
- client = this.client,
- async = (this.async) ? true : false,
- query = (typeof this.query === 'object') ? http.query(this.query)
- : (typeof this.query === 'string') ? this.query : null;
- switch (method) {
- case 'GET':
- // Az alábbi sorban a this.url nem elérhető pedig be van állítva.
- var url = this.url + (query) ? '?' + query : '';
- client.open(method, url, async); client.send(null);
- break;
- case 'POST':
- var url = this.url;
- client.setRequestHeader('Content-type', this.contentType);
- client.open(method, url, async); client.send(query);
- break;
- }
- }
Másfajta ellenőrzés
? :
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 athis.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.köszi szépen