输出类
const obj = {
a: 0,
};
obj["1"] = 0;
obj[++obj.a] = obj.a++;
const values = Object.values(obj);
obj[values[1]] = obj.a;
console.log(obj);
obj["1"] = 0;
//此时的obj
{
1: 0,
a: 0
}
++a 和 a++ 的操作,学过 c 语言的都知道,他们都是对 a 自增 1,不同的是 a++ 返回的是自增前的结果,++a 返回的是自增后的结果
//由于 obj.a 为 0 翻译过来也就是
//这里需要注意的,代码从左往右执行,最后赋值表达式在最后,那时候才是右边结果赋值给左侧
// obj[++a] = a++ 也就是,从左往右翻译表达式 obj[1] = 1
obj[++obj.a] = obj.a++;
//此时的obj
{
1: 1,
a: 2
}
Object.values 罗列 values 内容,并且按照前面说的按照数字类型升序,其他按照添加顺序排列
const values = Object.values(obj);
//参考上一步结果,下面则可以翻译为 obj[2] = 2
obj[values[1]] = obj.a;
//此时的obj
{
1: 1,
2: 2
a: 2
}
因此最后一行的结果就是
console.log(obj);
//打印结果就是 obj 的对象,按照指定规则排列打印就是它了
//由于数字这里也只能表示字符串,js打印结果还专门标出来引号怕被误解
{ '1': 1, '2': 2, a: 2 }