所以,我希望有一个具有动态属性名称的对象,从数组中检索。这是我到目前为止所尝试的:
var fruits = {};
var props = ['orange', 'apple', 'banana'];
for (var i = 0; i < props.length; i++) {
fruits.props[i] = 'Juice';
}
我的对象应该是这样的:
fruits { orange: 'Juice', apple: 'Juice', banana: 'Juice' };
但我收到了错误:
未捕获的TypeError:无法设置属性&#39; 0&#39;未定义的(...)
我做错了什么?
编辑:
不是因为问题标题相似,问题本身也必须如此。这个问题与695050不同,因为我没有从DOM中检索我的属性名称。我试图循环一个数组,在使用括号表示法时会引起混淆。
答案 0 :(得分:3)
在您的代码中fruits.props[i] = 'Juice';
会尝试设置属性为props
的{{1}}属性的第0个索引值并导致错误。
使用bracket notation使用字符串分配对象属性。
undefined
&#13;
答案 1 :(得分:2)
fruits.props[i] = 'Juice';
需要:fruits[props[i]] = 'Juice';
因为使用点表示法,您不能使用动态属性名称,但使用括号表示法,该属性应该是一个字符串,该字符串可以是文字或动态获得的值。
答案 2 :(得分:2)
您需要括号中的键,详细了解property accessors。
属性访问器通过使用点表示法或括号表示法提供对对象属性的访问。
<强>语法强>
object.property object["property"]
var fruits = {};
var props = ['orange', 'apple', 'banana'];
for (var i = 0; i < props.length; i++) {
fruits[props[i]] = 'Juice';
// ^ ^
}
console.log(fruits);
&#13;