Javascript 这是什么意思;字段1:字段2“;什么意思?
以下节选自降档演示:Javascript 这是什么意思;字段1:字段2“;什么意思?,javascript,reactjs,Javascript,Reactjs,以下节选自降档演示: {({ getInputProps, getItemProps, 伊索本, inputValue:inputValue2, selectedItem:selectedItem2, highlightedIndex, }) => ( 有人能解释一下“inputValue:inputValue2”是什么意思吗?当用于封闭{}时,分隔对象成员引用,其中冒号左侧的值“inputValue”是成员引用,右侧的值“inputValue2”是分配给该成员的变量或值 例如: v
{({
getInputProps,
getItemProps,
伊索本,
inputValue:inputValue2,
selectedItem:selectedItem2,
highlightedIndex,
}) => (
有人能解释一下“inputValue:inputValue2”是什么意思吗?当用于封闭{}时,分隔对象成员引用,其中冒号左侧的值“inputValue”是成员引用,右侧的值“inputValue2”是分配给该成员的变量或值 例如:
var test = "hello"
,obj = {a:1,b:2,c:test};
在上面的测试中,分配了值“hello”,在对象定义中,它有3个成员,a、b和c,a分配了1,b分配了2,c分配了变量test
alert(obj['c']);
将导致显示“hello”。此处inputValue:inputValue2表示inputValue是JSON键,inputValue2是要分配给此JSON键的变量
{
getInputProps,
getItemProps,
isOpen,
inputValue: inputValue2,
selectedItem: selectedItem2,
highlightedIndex,
}
这个JSON可以写成
{
getInputProps:getInputProps,
getItemProps:getItemProps,
isOpen:isOpen,
inputValue: inputValue2,
selectedItem: selectedItem2,
highlightedIndex:highlightedIndex,
}
如果键和分配的变量具有相同的名称,则可以忽略在右侧写入变量名称。这是销毁的一部分(滚动到“分配给新变量名称”)
在您提供的示例中,我们不希望对变量selectedItem
进行阴影处理,因此他们将其分配给selectedItem2
。这样,您就可以使用从您的状态定义的selectedItem
,以及提供给该函数的变量
下面是一个更简单的例子:
函数参数({
firstArg,
瑟达格,
fourthArg:DifferentivVariableName
}){
console.log(firstArg、thirdArg、differentVariableName)
}
武断({
第一个参数:1,
第三名:2,
福瑟格:3
});
所以代码
{
getInputProps,
getItemProps,
isOpen,
inputValue: inputValue2,
selectedItem: selectedItem2,
highlightedIndex,
}
是对象映射的简写语法
在es6之前,如果必须将数据从一个对象复制到另一个对象,则必须执行以下操作
var obj2;
obj2.firstProperty = firstProperty;
obj2.secondProperty = secondProperty;
(假设范围中已存在firstProperty和secondProperty)
现在是es6
您可以使用速记语法
obj2={
第一财产,
第二财产
}
现在,当变量和对象中的属性名称相同时,这就可以工作了。
但是如果您必须将对象中“secondProperty”的属性名更改为“second”,那么您必须在对象中显式映射该属性
obj2={
第一财产,
第二个=第二个属性
}
因此,在您的示例中,作用域中有一个属性“inputValue2”,但您希望将对象中的该属性重命名为“inputValue”这就是显式属性映射语法的原因。不是这样,我认为它是JOSN对象。这里他/她作为参数传递。这是键值组合,但如果值是变量且与键同名,则可以忽略以写入该变量名称。请尝试此变量a=10;变量d={a,b:20};console.log(d);我明白了!谢谢!问题是在示例中没有定义InputValue2。这怎么可能?@Vincent,您可以使用console.log或alert来显示InputValue2并验证它是否已定义,或者显示成员InputValue2的内容,它将向您显示分配的内容。@Vincent,因为这个答案只是关于“常规对象”.但你问的是
var obj2;
obj2.firstProperty = firstProperty;
obj2.secondProperty = secondProperty;