我想知道是否有可能有一个具有某些属性的对象,例如:
对象名称:人
this.age = 8
this.name = "Steve"
然后有一个字符串数组,其中包含该对象的每个属性,例如:
manAttributes = ["age","name"]
因此,如果我写了
console.log(Human.manAttributes[0])
控制台应记录' 8 '但这不起作用,我得到了意想不到的字符串。
由于
答案 0 :(得分:1)
对象是键:值对。键和值由:(冒号)分隔。在您的情况下,您已用 = 分隔。更改您的代码如下:
var Human = {
manAttributes: ["age","name"],
age: 8
};
alert(Human[Human.manAttributes[0]]); //alerts 8
此解决方案将manAttributes视为Human对象的属性。如果manAttributes是Human对象之外的单独数组,那么,
var manAttributes = ["age","name"];
var Human = {
age: 8
};
alert(Human[manAttributes[0]]); //alerts 8
答案 1 :(得分:0)
如果你正在寻找迭代属性, 我建议采用以下方法。
var human = {
name: "Smith",
age: "29"
};
var manAttributes = ["age","name"];
for(var prop in manAttributes){
if(human.hasOwnProperty(manAttributes[prop])){
console.log(human[manAttributes[prop]]);
}
}
答案 2 :(得分:0)
可以通过点表示法或括号表示法访问对象属性(请参阅Mozilla's JavaScript reference)。
所以,这将输出你想要的东西:
console.log(Human[manAttributes[0]]);
答案 3 :(得分:0)
你需要:
Human[manAttributes[0]]
[]
语法是通过(变量)名称而不是常量文字标记访问属性的方式。
答案 4 :(得分:0)
function Human(age,name) {
this.age = age;
this.name = name;
}
var self = new Human(8,'Steve');
var humanProperties = Object.getOwnPropertyNames(self);
console.log(self[humanProperties[0]])