var collection = {
"5439": {
"album": "ABBA Gold"
}
};
function updateRecords(id, prop, value) {
if(prop !== "tracks" && value !== ""){
collection[id].prop=value;
}
return collection;
}
updateRecords(5439, "artist", "ABBA");
为什么结果是Object { album="ABBA Gold", prop="ABBA"}
,而不是Object { album="ABBA Gold",artist="ABBA"}
?
何时解析collection[id].prop=value;
,prop的值为artist,id的值为5439,因此collection[id].prop=value;
应解析为collection[5439].artist="ABBA";
,为什么不呢?
答案 0 :(得分:4)
object
属性名称可以是任何有效的JavaScript字符串,也可以是任何可以转换为字符串的内容,包括空字符串。但是,任何不是有效JavaScript标识符的属性名称(例如,具有空格或连字符的属性名称,或以数字开头的属性名称)只能使用方括号表示法访问。 当动态确定属性名称时,此表示法也非常有用(直到运行时才确定属性名称。)
collection[id][prop] = value;
代替,
collection[id].prop=value;
答案 1 :(得分:0)
更改第collection[id].prop=value;
行
到collection[id][prop]=value;
var collection = {
"5439": {
"album": "ABBA Gold"
}
};
function updateRecords(id, prop, value) {
if (prop !== "tracks" && value !== "") {
collection[id][prop] = value;
}
return collection;
}
updateRecords(5439, "artist", "ABBA");