"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