i正在构建一个对象参数结构,用于插件的初始化。特定的插件或结构无关紧要,但可以说这很简单,如以下内容:
{
key1:'val1',
key2: {
subkey1: 'subval1'
}
}
我在两个不同的对象变量中构建了整体结构,例如:
var key2 = {subkey1: 'subval1'};
var finalStructure = {
key1: 'val1',
key2 <-- oops! instead of key2: key2
};
我直到后来才意识到我忘记了指定"键2:"键,并且惊讶地发现总体结构确实最终出现了key2: {...}
。
我将key2的变量名称更改为foobar,结果结构使用了可变名称" foobar"作为键的名称。
var foobar = {subkey1: 'subval1'};
var finalStructure = {
key1: 'val1',
foobar
};
产生了这种结构:
{
key1:'val1',
foobar: {
subkey1: 'subval1'
}
}
是这种记录的和预期的行为;安全吗?还是这是一个碰巧导致JavaScript行为的幸运错误?
是这种记录和预期的行为;安全做?
是的,它们是速记属性。如果仅放置变量名,则该对象将将变量名称作为属性名称,然后将其分配为由该变量持有的值。
// 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 }