Szukałem wykorzystania Enum w JavaScript. Znalazłem jeden link stackoverflow Enums in JavaScript? To dobry początek.

Ten link pokazuje go do dobrego użycia

var SIZE = {
SMALL : {value: 0, name: "Small", code: "S"}, 
MEDIUM: {value: 1, name: "Medium", code: "M"}, 
LARGE : {value: 2, name: "Large", code: "L"}
};

var currentSize = SIZE.MEDIUM;
if (currentSize == SIZE.MEDIUM) {
// this alerts: "1: Medium"
alert(currentSize.value + ": " + currentSize.name);
}

Mój wymóg był nieco inny i dlatego zmieniam powyższy kod taki jak

var MSg = {
        Country= {
                    GBR: {name_req:"Name Required",email_req:"Email Required"},
                    FRA: {name_req:"FRA Name Required",email_req:"FRA Email Required"}
                 }

    };

but it is giving error. so please guide me how to write the above code without error. also tell me the enum code will work in all the browser? thanks.

dla moich własnych przyszłych odniesień

var dialog =
    {
        MainContainer:
        {
            Country:
            {
                GBR:
                    {
                        height: 365, width: 257
                    },
                FRA:
                    {
                        height: 375, width: 310
                    }

            }
        },
        SubContainer:
        {
            Country:
            {
                GBR:
                    {
                        height: 0, width: 257
                    },
                FRA:
                    {
                        height: 0, width: 300
                    }
            }
        }
    };

    var Validation =
    {
        Msg:
        {
            Country:
            {
                GBR:
                    {
                        Name: "Name Required",
                        Subject: "Subject Required",
                        Email: "Email Required",
                        Invalid_Email: "Invalid Email Address",
                        Feedback: "Feedback details Required",
                        Success: "Feedback send successfully",
                        Fail: "Feedback send fail"
                    },
                USA:
                    {
                        Name: "Name Required",
                        Subject: "Subject Required",
                        Email: "Email Required",
                        Invalid_Email: "Invalid Email Address",
                        Feedback: "Feedback details Required",
                        Success: "Feedback send successfully",
                        Fail: "Feedback send fail"
                    }
            }
        }
    };

Przypisanie lub kraj określony

 var feedCookie = getCookie('SetCountry');
 feedCookie = (feedCookie == '' ? 'GBR' : feedCookie);
 var dialog_Main = dialog.MainContainer.Country[feedCookie];
 var dialog_Sub = dialog.SubContainer.Country[feedCookie];
2
Thomas 29 wrzesień 2012, 22:20

4 odpowiedzi

Najlepsza odpowiedź

Powinieneś zrobić:

var MSg = {
    Country : {
                GBR: {name_req:"Name Required",email_req:"Email Required"},
                FRA: {name_req:"FRA Name Required",email_req:"FRA Email Required"}
             }

};

Teraz var c =MSg.Country.GBR da ci c = {name_req:"Name Required",email_req:"Email Required"}

0
Prasanth 29 wrzesień 2012, 18:26

Nie używasz = wewnątrz definicji obiektu. Używasz :, aby zdefiniować nową właściwość.
Więc zmień Country = { do Country: { w ten sposób:

var MSg = {
    Country: {
                GBR: {name_req:"Name Required",email_req:"Email Required"},
                FRA: {name_req:"FRA Name Required",email_req:"FRA Email Required"}
             }

};
5
jfriend00 29 wrzesień 2012, 18:35

Oryginalna odpowiedź z pytania, w odniesieniu do op, sugerując tę składnię:

var SIZE = {
    SMALL : {value: 0, name: "Small", code: "S"}, 
    MEDIUM: {value: 1, name: "Medium", code: "M"}, 
    LARGE : {value: 2, name: "Large", code: "L"}
};

Był mój. Jednak w międzyczasie dowiedziałem się więcej, a teraz polecam przeciwko tej zarys. Nie używaj tej składni! Takie podejście ma poważne problemy, gdy enum musi być serializowany (JSON.stringify() i JSON.parse() itp.).

Zamiast tego użyj tej składni:

var SIZE = {
    SMALL: 0,
    MEDIUM: 1,
    LARGE: 2,

    properties: {
        0: {value: 0, name: "Small", code: "S"},
        1: {value: 1, name: "Medium", code: "M"}, 
        2: {value: 2, name: "Large", code: "L"}
    }
};

Trochę więcej pełniejszych, tak. I dostęp do właściwości wartości Enum jest również nieco mniej intuicyjny:

var size = SIZE.SMALL;
var code = SIZE.properties[size].code;

Jednak w ten sposób twoje wartości enum przetrwa (DE) serializację. W dzisiejszej sieci z jego żądaniami Ajax, odpoczynek API i JSON, to tak ważne, że jest to ofiara, którą powinniśmy zrobić.

Przeczytaj mój wpis na blogu o tym temacie, aby uzyskać więcej informacji: Enaums w JavaScript - Stijn de Witt's Blog

1
Stijn de Witt 2 czerwiec 2015, 11:16

To:

var MSg = {
        Country= {
                    GBR: {name_req:"Name Required",email_req:"Email Required"},
                    FRA: {name_req:"FRA Name Required",email_req:"FRA Email Required"}
                 }

    };

Powinno być to:

var MSg = {
        Country: { // <- RIGHT HERE
                    GBR: {name_req:"Name Required",email_req:"Email Required"},
                    FRA: {name_req:"FRA Name Required",email_req:"FRA Email Required"}
                 }

    };
0
Lucas Green 29 wrzesień 2012, 18:23