Javascript 组合属性速记和rest:{type,which,selected:{…selected,…hovered}}}:what';这里发生了什么事?
编辑:对于每个说我需要提供背景的人:答案就在这里。下面的两个变量--Javascript 组合属性速记和rest:{type,which,selected:{…selected,…hovered}}}:what';这里发生了什么事?,javascript,ecmascript-6,Javascript,Ecmascript 6,编辑:对于每个说我需要提供背景的人:答案就在这里。下面的两个变量--类型和其中--来自此表达式外部的源,通过展开创建的对象中的所有内容都指定给选定对象。我在想,不知何故,这些类型和类型也从传播创造的对象中获得了它们的价值。不是这样 我正在修改一位离职的首席开发人员的代码,遇到了一个我不理解的公式 {type,which,selected:{…selected,…hovered}} 从这段代码 export const renderSelector = createSelector( sele
类型
和其中
--来自此表达式外部的源,通过展开创建的对象中的所有内容都指定给选定对象。我在想,不知何故,这些类型和类型也从传播创造的对象中获得了它们的价值。不是这样
我正在修改一位离职的首席开发人员的代码,遇到了一个我不理解的公式
{type,which,selected:{…selected,…hovered}}
从这段代码
export const renderSelector = createSelector(
selectedTypeSelector,
selectedSelector,
hoveredSelector,
(type, selected, hovered) => memoize(
which => loadRender({ type, which, selected: { ...selected, ...hovered } }),
),
);
我已经非常仔细地研究了ES6特性,不记得见过这个。我完全理解右手边的扩散,但我不清楚左手边发生了什么。也就是说:类型是什么,所选:
具体做什么?我四处询问,有人向我解释说,上面的:
左侧的字段名捕获了由{…selected,…hovered}
创建的对象中的匹配字段,如果左侧有不匹配字段名,则将不匹配字段放在一个rest
数组中。有人能给我指一个描述这个的链接吗?谢谢 看起来像
{ type, which, selected: { ...selected, ...hovered } }
某些变量组合到单个对象,如下所示:
类型
哪个
- 选择了一个新对象
,其属性为
,其中包含一个对象选定的
,其中也包含一个对象悬停
{ type, which, selected: { ...selected, ...hovered } }
几乎等于
{
"type": type,
"which": which,
"selected": Object.assign({}, selected, hovered)
}
其中类型
,哪个
,选中
,以及悬停
都是局部变量。换句话说,“type”
和“
是使用指定的,“selected”
被明确指定为所选的和悬停的的浅层合并
1我之所以说“几乎”,是因为对象.assign
触发属性设置程序,而..
对象扩展语法不触发属性设置程序。您可以使用类型,wich
,选中和悬停创建一个新对象
consttype='value of type';
常量which=‘which的值’;
const selected={propOfSelected:'value1',sharedtop:'value1'};
悬停常量={sharedProp:'value2',newProp:'value of new prop'};
log({type,which,selected:{…selected,…hovered}})
这行在什么上下文中?看起来它只是构造了一个对象,其中包含类型
属性和属性,每个属性都在中,另一个已选择
属性。没什么特别的。@Xufox说到点子上了——没有上下文,我们只能给你一些可能毫无用处的信息。例如,type
将在名为type
的对象上定义一个新键,该键将具有type
变量中包含的任何值。这是一个正确的解释,但可能对您没有用处。如果在lhs上,您不能有两个具有rest参数的目标对象。请创建一个具有type
和wich
属性的对象,这些属性的值为type
和wich
值(这些是范围内的参数),详细信息。新对象有一个selected
属性,该属性是一个对象,该对象具有所有selected
变量键,并由悬停的扩展或覆盖