JavaScript对象调用不工作
我创建了一个对象,如下所示:JavaScript对象调用不工作,javascript,object,Javascript,Object,我创建了一个对象,如下所示: var classes = { login: { form: { wrapper: 'content-login', cls: 'login-form', fields: 'login-fields' }, username: {
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'];
我试着像这样调用某个键:
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'];
但不是这样的,只是这样:
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'];
或者像这样:
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];
我能让它像那样工作吗?因为我在某个地方见过这个方法,但我不知道它是否与我的方法相同正在代码行运行的任何范围内查找名为
login
的对象。找不到,因为登录
是类
的属性。因此,这将抛出一个ReferenceError,因为login
未定义
如果定义了login
,并且具有名为form
的属性,而该属性又具有名为wrapper
的属性,则将使用该属性的值:
var login = {
form: {
wrapper: 'login'
}
};
console.log(classes[login.form.wrapper]); //Now this would return classes.login
classes.login.form.wrapper代码>工作,因为classes
是一个具有名为login
的属性的对象
classes['login']
相当于类。登录
。您可以编写类['login']['form']['wrapper']
作为类[login.form.wrapper]的等价物
正在代码行运行的任何范围内查找名为login
的对象。找不到,因为登录
是类
的属性。因此,这将抛出一个ReferenceError,因为login
未定义
如果定义了login
,并且具有名为form
的属性,而该属性又具有名为wrapper
的属性,则将使用该属性的值:
var login = {
form: {
wrapper: 'login'
}
};
console.log(classes[login.form.wrapper]); //Now this would return classes.login
classes.login.form.wrapper代码>工作,因为classes
是一个具有名为login
的属性的对象
classes['login']
相当于类。登录
。您可以在编写时将classes['login']['form']['wrapper']
编写为与classes.login.form.wrapper
<
classes[login.form.wrapper];
需要对象登录。
由于login
是类的一部分,因此在编写时必须指定类的整个“路径”。
classes[login.form.wrapper];
需要对象登录。
由于登录是类的一部分,您必须指定类的整个“路径”。您不能这样调用对象
类[login.form.wrapper]
因为登录是对象类的键,所以它的工作方式如下
classes['login']或classes.login
您的密钥不应该是这样的:类[login.form.wrapper] 不能这样调用对象
类[login.form.wrapper]
因为登录是对象类的键,所以它的工作方式如下
classes['login']或classes.login
您的密钥不应该是这样的:类[login.form.wrapper] 使用以下命令:
classes['login']['form']['wrapper']
您试图调用的代码无效:
classes[login.form.wrapper];
您所指的是未定义的login
变量。使用以下方法:
classes['login']['form']['wrapper']
您试图调用的代码无效:
classes[login.form.wrapper];
您指的是未定义的login
变量。答案与您的描述基本一致
基本上,您希望访问一个特定的属性,即案例中的嵌套属性
classes.login.form.wrapper;
这非常直观地认识到,登录在类中,表单在登录中,包装在表单中
JavaScript还允许您使用属性名作为索引,如:
classes['login'];
但是,
classes[login.form.wrapper];
这实际上意味着要查找名称存储在中的类的属性
login.form.wrapper
显然,login.form.wrapper本身并不存在。答案与您的描述基本一致
基本上,您希望访问一个特定的属性,即案例中的嵌套属性
classes.login.form.wrapper;
这非常直观地认识到,登录在类中,表单在登录中,包装在表单中
JavaScript还允许您使用属性名作为索引,如:
classes['login'];
但是,
classes[login.form.wrapper];
这实际上意味着要查找名称存储在中的类的属性
login.form.wrapper
显然,login.form.wrapper
本身并不存在。是的,我发现我不能,因为我尝试用try{…}catch{…}
进行调试,我看到它给了我一个引用错误,但是,有没有办法让它工作?因为我有500多行代码需要修改才能正常工作?@Roland-请参阅我的编辑。您可以创建一个具有适当属性的login
对象,但这非常混乱。我建议重组你的代码!你的意思是做类['login']['form']['wrapper']
。好吧,如果是这样的话,那就意味着我必须通读一遍并这样做:(@Roland-对不起,我弄错了。你真的必须全部修改!没问题,我已经编写了一个PHP脚本,它打开一个文本文件,查找每一个[
和]
事件,并将其替换为['
和']
在这之前,在[…]
中查找
并将其替换为][
,这在几毫秒内就完成了:)这是一件好事,我已经厌倦了手动做这件事,并考虑做一个PHP脚本:D:)谢谢你的信息,我认为我有一个更大的问题:)是的,我发现我不能,因为我尝试调试try{…}catch{…}
我看到它给了我一个引用错误,但是,没有办法让它工作吗?因为我有500多行代码要修改,以正确的方式使其工作?@Roland-查看我的编辑。你可以创建一个具有适当属性的登录
对象,但这非常混乱。我建议重新构造你的代码!Y你的意思是做类['login']['form']['wrapper']
.W