Autor Zpráva
Amunak
Profil
Když jsem psal tento kód pro Více blikajících textů na stránce.., chtěl jsem tam taky udělat výchozí objekt s nastavením, kde by se vlastnosti přepsaly podle potřeby. Jde to vůbec udělat, aniž bych musel ten předávaný objekt projít cyklem?

function doSomething(suppliedConf) {
  var conf = {
    a: true,
    b: 15,
    c: "helloworlds!"
  }
  // do something
}

doSomething({a:false});
Tedy jak udělat, aby ve výše uvedeném kódu byly v conf ty tři položky, ale a: false (předané ze suppliedConf)? Šlo by to bez procházení toho předaného objektu?
JaySee
Profil
function doSomething(suppliedConf) {
    var conf = {
        a: true,
                b: 15,
                c: "helloworlds!"
    }
    for(var index in conf) {
        if(typeof options[index] == "undefined") options[index] = conf[index];
    }    
    
}
doSomething({
        'a'    :    false,
        'b'    :    10
    });
pako
Profil *
Ak na konfiguraciu nepotrebujes hodnoty, ktore sa vyhodnotia ako false, mozes pouzit operator ||
var conf = {
    a: argumentConfig.a || 1000;
}
Amunak
Profil
pako:
A i to by šlo "řešit" tak, že by výchozí hodnota byla u booleanů vždy false. Anebo porovnávat přes suppliedConfig.neco === undefined. Problém je, že při delších konfiguracích tam máš pak strašně moc zbytečného textu navíc. Ale to už by zase nevadil cyklus (který jinak taky relativně protahuje ten skript). Takže obě řešení jsou asi správná :)

Takže v JS není něco jako v Javě a jiných jazycích - nějaká dědičnost, nebo tak něco?
pako
Profil *
Amunak:
To ma nenapadlo, dobra idea.

Skus si precitat tento serial: http://www.zdrojak.cz/clanky/oop-v-javascriptu-i/
Amunak
Profil
pako:
Díky, podívám se na to.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: