为什么这不起作用?我想用这段代码检查对象的子对象是否为true / false,但是当我尝试它时它总是返回false。
var testobject = {
a:true,
b:false
}
function test(check) {
if (testobject.check) {
console.log('it works')
}
else {
console.log('it doesn\'t work')
}
}
test('a');
答案 0 :(得分:1)
当您使用testobject.check
时,check
是对象中属性的标识符,它不是变量check
。
使用括号语法以字符串作为名称访问属性:
if (testobject[check]) {
答案 1 :(得分:1)
因为您的testobject没有名为check
的属性。您要找的是testobject[check]
如果您使用字符串作为属性,则可以使用括号[]
表示法。
testobject.a
相当于testobject["a"]
答案 2 :(得分:0)
在使用字符串时,我通常使用数组样式语法引用对象。不确定你的方式是否有效,但这应该是。我会暂时测试以验证:
function test(check) {
if ( testobject[check] ) {
console.log('it works')
}
else {
console.log('it doesn\'t work')
}
}
test('a')
是的,有效...这里有一个JSFiddle: