参数不是会传递进去吗?

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[9439].artist="ABBA";

阅读 3k
3 个回答

这是啥JS动态语言的特点,无需声明,就可以为对象添加属性,你使用object.prop=value时,就是为object对象添加了prop属性和对应的value值,在动态设置属性时,js提供了很简洁的方案object[prop]=value;这时prop才会被当做变量看待。

function updateRecords(id, prop, value) {
  if(prop !== "tracks" && value !== ""){
    collection[id][prop]=value;//同id
  }

  return collection;
}
updateRecords(5439, "artist", "ABBA");
console.log(collection);

object[prop]=value与object.prop=value的区别

var a = 'A'
var obj = {}
obj.a = 'A'

obj.A = ?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题