将新属性附加到对象内的特定位置

125*_*748 5 javascript jquery

如果我将附加属性附加到对象,它是否必须放在末尾,或者我可以将其放在指定位置吗?

function reassign(obj){
  delete obj.c;
  obj.c = "new three";

  var t = "<table border=\"1\">";
  for (var i in obj){
    t += "<tr><td>" + obj[i] + "</td></tr>"; 
  }
  t += "</table>";
  return t;
}

var obj = {
  a : "one",
  b : "two",
  c : "three",
  d : "four" 
};

var reassigned = reassign(obj);
document.write(reassigned);
Run Code Online (Sandbox Code Playgroud)

是否有可能obj.c在删除后将新的内容再次放在第三个位置,而不是将其附加到末尾?当然我可以跳过删除部分。但即使没有那个,我也可以例如打算注入alphabeta: "one point five"第二个位置。是否可以?谢谢!

jsbin

Bla*_*ger 2

数组元素是有序的;对象属性不是。您永远不应该假设对象属性将以特定顺序迭代。

如果顺序对您很重要,请创建一个order:[]包含属性名称数组的新属性,然后您可以对其进行迭代:

var obj = {
  a : "one",
  b : "two",
  c : "three",
  d : "four",
  order : ['a','b','c','d']
};
Run Code Online (Sandbox Code Playgroud)