我正在构建一个对象参数结构以用于插件的初始化。具体的插件或结构并不重要,但可以说它很简单,如下所示:
{
key1:'val1',
key2: {
subkey1: 'subval1'
}
}
我在两个不同的对象变量中构建整体结构,如下所示:
var key2 = {subkey1: 'subval1'};
var finalStructure = {
key1: 'val1',
key2 <-- oops! instead of key2: key2
};
直到后来我才意识到我忘记指定“key2:”键,并且惊讶地发现整体结构确实以 key2: {...}
结束。
我将 key2 的变量名称更改为 foobar,结果结构使用变量名称“foobar”作为键的名称。
var foobar = {subkey1: 'subval1'};
var finalStructure = {
key1: 'val1',
foobar
};
产生了这样的结构:
{
key1:'val1',
foobar: {
subkey1: 'subval1'
}
}
这是有记录的和预期的行为吗?安全吗?或者这是一个幸运的错误,恰好导致 javascript 出现这种行为?
最佳答案
Is this documented and expected behavior; safe to do?
是的,他们是shorthand properties 。如果只输入变量名称,则对象会将变量名称作为属性名称,然后为其分配该变量所保存的值。
// Shorthand property names (ES2015)
var a = 'foo', b = 42, c = {};
var o = {a, b, c};
console.log(o); // {a:'foo', b: 42, c: {}}
// The long, and quite redundant, route:
var o = { a: a, b: b, c: c }
关于javascript - 将存储在变量中的对象添加到另一个对象而不指定键就是使用变量名作为键。这是预期的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56083194/