JavaScript 对象调用不起作用

标签 javascript object

我有一个这样创建的对象:

var classes = {

        login: {
            form: {
                wrapper:        'content-login',
                cls:            'login-form',
                fields:         'login-fields'
            },
            username: {
                wrapper:        'username-wrapper',
                label:          'user-img',
                input:          'username'
            },
            password: {
                wrapper:        'password-wrapper',
                label:          'pass-img',
                input:          'password'
            },
            button: {
                wrapper:        'login-wrapper',
                proceed:        'login'
            },
            toogle: {
                trigger: {
                    wrapper:    'toogle-button',
                    button:     'toogle'
                },
                buttons: {
                    wrapper:    'toogle-buttons',
                    twitter:    'twitter-login',
                    register:   'register',
                    recover:    'recover-password'
                }
            }   
        },

        register: {
            form: {
                wrapper:        'content-register',
                cls:            'register-form',
                fields:         'register-fields'
            },
            username: {
                wrapper:        'username-wrapper',
                label:          'username-label',
                input:          'username'
            },
            email: {
                wrapper:        'email-wrapper',
                label:          'email-label',
                input:          'email' 
            },
            password: {
                wrapper:        'password-wrapper',
                label:          'password-label',
                input:          'password'  
            },
            confirm: {
                wrapper:        'confirm-wrapper',
                label:          'confirm-label',
                input:          'confirm'
            },
            captcha: {
                wrapper:        'captcha-wrapper',
                label:          'captcha-label',
                input:          'captcha'
            },
            button: {
                wrapper:        'register-wrapper',
                message:        'message-handling',
                proceed:        'register'
            },
            back: {
                wrapper:        'back-button',
                button:         'back'
            }
        },

        recover: {
            form: {
                wrapper:        'content-recover',
                cls:            'recover-form',
                fields:         'recover-fields'
            },
            email: {
                wrapper:        'email-wrapper',
                label:          'email-label',
                input:          'email' 
            },
            button: {
                wrapper:        'recover-wrapper',
                proceed:        'recover'
            },
            back: {
                wrapper:        'back-button',
                button:         'back'
            }
        },

        reset: {
            form: {
                wrapper:        'content-reset',
                cls:            'reset-form',
                fields:         'reset-fields'
            },
            email: {
                wrapper:        'email-wrapper',
                label:          'email-label',
                input:          'email'
            },
            authcode: {
                wrapper:        'authcode-wrapper',
                label:          'authcode-label',
                input:          'authcode'  
            },
            password: {
                wrapper:        'password-wrapper',
                label:          'password-label',
                input:          'password'  
            },
            confirm: {
                wrapper:        'confirm-wrapper',
                label:          'confirm-label',
                input:          'confirm'
            },
            button: {
                wrapper:        'proceed-wrapper',
                message:        'message-handling',
                proceed:        'proceed'
            },
            back: {
                wrapper:        'back-button',
                button:         'back'
            }
        },

        success: {
            wrapper:            'after-login',
            message:            'row-one',
            buttons: {
                wrapper:        'row-two',
                cancel:         'cancel',
                proceed:        'continue'  
            }
        },

        lockdown: {
            wrapper:            'system-lockdown',
            message:            'row-one',
            buttons: {
                wrapper:        'row-two',
                back:           'back'
            }
        }

    }

我正在尝试像这样调用某个键:

classes[login.form.wrapper];

但不是那样的,只能这样:

classes.login.form.wrapper;

或者像这样:

classes['login'];

谁能告诉我为什么它不能像这样工作:

classes[login.form.wrapper];

我可以让它像那样工作吗?因为我在某处看到过这种方法,但我不知道它是否与我的相同。

最佳答案

使用这个:

classes['login']['form']['wrapper']

您尝试调用的代码无效:

classes[login.form.wrapper];

您指的是未定义的 login 变量。

关于JavaScript 对象调用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8879299/

相关文章:

javascript - Concat Array of Observables 并有一个单一的订阅输出

javascript - 在字符串中每组数字之前插入字符

object - 在Kotlin中无法在对象的父类(super class)构造函数中使用常量

javascript - 循环对象值

java - 将 java 对象存储到 Oracle 数据库的最佳数据类型

c# - 不为空的空对象

javascript - MSIE : Append XML Element to HTML Element

javascript - 使用 node.js 流创建一个文件并通过管道传递给 gulp

javascript - 滚动不适用于动态添加到 jQuery 移动列表的项目

c# - 在c#中读取封装在对象中的结构体数组